[Haskell-cafe] Monads vs. monoids

Marcin Szamotulski profunctor at pm.me
Wed Jul 18 09:21:55 UTC 2018


There is more to this picture.  If you have a set G then lists of elements of G is the free monoid.  You get a list only because the category of sets is monoidal with the monoidal product the cartesian product.   The same construction can be carried to free monads, but in a different category: the monoidal category of endofunctors, where the monoidal product is functor composition, so you'll end up with a recursive thing build in much of the same way.  I recently wrote a blog posts about it: https://marcinszamotulski.me/posts/free-monads.html - if you're not afraid of some mathematics (universal algebra and just a bit of category theory).

Free construction carries all the structure of monoids or monads: having free monoid / monad you can get back `mempty` and `mappend` (or `return` and `join` / `>>=`) for any other monoid / monad.

Best regards,
Marcin


​Sent with ProtonMail Secure Email.​

‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐

On July 17, 2018 10:36 PM, Joachim Durchholz <jo at durchholz.org> wrote:

> Am 17.07.2018 um 22:23 schrieb Olaf Klinke:
> 
> > You could say that every monad harbors a monoid, and that every monoid
> > 
> > arises this way. But of course the whole and the part are not the same.
> 
> Agreed.
> 
> > That depends on the definition of "monoid". If a monoid is a set with
> > 
> > certain structure, then a monad is not a monoid.
> 
> That's the perspective from which I'm looking at abstract data types: A
> 
> set of values, a set of operations, a set of axioms over the operations
> 
> and values.
> 
> Well, that's the textbook definition, there's a lot of data structures
> 
> that have multiple value sets but still are related through axioms. I
> 
> just don't know an example of such a structure that it could make it
> 
> into the textbooks :-)
> 
> From that perspective, monads and monoids are distinct.
> 
> Even fundamentally so: Monad axioms have more type parameters than
> 
> monoid axioms, so they cannot be made isomorphic by clever transformations.
> 
> > > There's also a final argument: If monad and monoid are really the same,
> > > 
> > > why do mathematicians still keep the separate terminology?
> > 
> > Because they are different, as we hopefully agree.
> 
> We do :-)
> 
> Regards,
> 
> Jo
> 
> Haskell-Cafe mailing list
> 
> To (un)subscribe, modify options or view archives go to:
> 
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> 
> Only members subscribed via the mailman list are allowed to post.




More information about the Haskell-Cafe mailing list