
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 important. 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. http://messenger.yahoo.com/