Michael Vanier wrote:
Luke Palmer wrote:
> Michael Vanier wrote:
> >     Are you sure it supports
> >     (>>) :: m a -> m b -> m b
> >
> >     and not
> >     mplus :: m a -> m a -> m a ?
> > Yeah, you're right. It's basically a monad where the type a is
>     fixed to be (), so you just have
>
>     (>>) :: m () -> m () -> m ()
>
>
> That's a monoid.

Got it.  Thanks.

If the return is important ---and the structure can be parameterized by non-() types, and the binop is actually mplus not (>>)--- then it may also be a monoid generated from a semigroup. This is the case when there's an (M a) which can't be generated by return and which serves as the identity for the binop. Prime examples are monoids similar to Maybe which are generated by Nothing, return, and any semigroup on the underlying set.

--
Live well,
~wren
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to