
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
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.