[Haskell-cafe] Join and it's relation to >>= and return

Ron de Bruijn rondebruijn at yahoo.com
Tue Jun 8 16:45:15 EDT 2004

I am pretty sure, that >>= is to monads what * is to
for example natural numbers, but I don't know what the
inverse of >>= is. And I can't really find it anywhere
on the web(papers, websites, not a single sole does
mention it. 

It should have type, at least that's what I think:
inv::M a->M b

I say this, because I find this definition of a
multiplication operation:

   1. There exists a unique special element called
neutral such that the operation on any element and the
neutral does not change the element.
   2. For every element there exists an inverse such
that the operation on an element and its inverse is
always neutral.
   3. The operation is associative: it does not matter
how you apply the operation to three elements. You may
apply it to the first two and then to the result and
the third element. Or you may first apply the
operation to the last two and then to the first and
the result of the previous operation. 

An operation may also be commutative

   4. The order of two elements in operation is not

According to 2 there should be an inverse. For join
such an inverse is simple: to apply the type
constructor on the monad. But I tried to somehow link
it with bind, but than the types don't seem to match.
So to be concrete: what's the inverse of bind? 

If I did make some errors, please tell me so. 

Do you Yahoo!?
Friends.  Fun.  Try the all-new Yahoo! Messenger.

More information about the Haskell-Cafe mailing list