[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