Looks like I have a pretty clear understanding what a Monoid is in Haskell, but last time I heard about something called a free monoid.
Obviously, if a data structure is a monoid, it's foldable, but is it safe to say if a data structure is foldable, it's a monoid?
Maybe expresses computations that might not produce a result due to an error. Therefore such computations must be short circuited.
Perhaps neither of these statements are categorically precise, but a monad is often defined as "a monoid in the category of endofunctors"; a Haskell Alternative is defined as "a monoid on applicative functors", where an applicative functor is a "strong lax monoidal functor". Now these two definitions sound pretty similar...