Proposal: Applicative => Monad: Call for consensus

Tyson Whitehead twhitehead at
Wed Jan 5 17:43:58 CET 2011

On January 4, 2011 13:53:22 Maciej Piechotka wrote:
> The bind is always harder as join x == x >>= id so join have 1 parameter
> known. In some cases it is large simplification (see Writer).

That's a very nice explanation.

I also find join is quite a bit clearer for me to think about in terms of 
exactly what additional power monad gives you over applicative.

In applicative the outer computations can not access the results of inner 
computations to react to them (values can only be injected inwards).  Thus the 
sequence/structure of the outer computation is independent of the inner one.

(presumably this strong guarantee makes various optimizations possible -- 
making it a shame to use a full blown monad when only applicative is needed)

Join makes makes the results of inner computations available to outer ones.  
This allows the outer computation to react to the specifics of the inner one, 
which is the additional power/complexity of a monad (e.g., my next IO action 
can depend on the actual content of the file read in my previous IO action).

Cheers!  -Tyson
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 490 bytes
Desc: This is a digitally signed message part.
URL: <>

More information about the Libraries mailing list