[Haskell-cafe] Re: what is inverse of mzero and return?

Jorge Adriano Aires jadrian at mat.uc.pt
Sun Jan 23 15:31:23 EST 2005


> Am Sonntag, 23. Januar 2005 15:58 schrieb Jorge Adriano Aires:
> > I'm not arguing that definition would be "wrong". It is a monoid. This is
> > the instance for ():
> >
> > instance MonadPlus() where
> >   mzero = ()
> >   mplus a b = ()
>
> Maybe I'm stupid, but:
>
> class Monad m => MonadPlus m where
>     mzero :: m a
>     mplus :: m a -> m a -> m a
>
> How does () fit into this, () isn't of kind * -> *, as far as I know
> () Int is meaningless -- just checked, gives Kind Error.


Nope, I am. Sorry! I was alternating between monoids and monadplus, and came 
up with that nonsense. I was obviously thinking about Monoid () and not 
MonadPlus (). 


> > And this would be "correct" too:
> >
> > instance MonadPlus Maybe where
> >   mzero = Nothing
> >   mplus a b = Nothing
> >
> >> instance MonadPlus [] where
> >
> >   mzero = []
> >   mplus a b = []
>
> Both aren't correct, since mzero `mplus` x == x
> doesn't hold (they're syntactically correct, though).

Yeap. You are right again. Sorry for this terrible example, please ignore it.

J.A.


More information about the Haskell-Cafe mailing list