
Simon Peyton-Jones
Furthermore there must be no lambda between the "monadic splice" and the "do".
I'm curious about this. One could sugar: do tax <- getTax return $ map (\price -> price * (1 + tax)) bill into: do return $ map (\price -> price * (1 + (<- getTax))) someNums Do you not think this is desirable? Is there a negative side-effect that I'm not noticing? I sort of see this in the same boat as Neil's example with if/then/else. The meaning may not be precisely what you'd expect... but mind-reading is hard, and it's more consistent to just say "find the innermost containing do block" than make up new rules for each piece of syntax. Granted, a special case of "it's an error" is far more appealing than the corresponding special case for if; but I don't yet see a reason for this exception to the rule either. -- Chris Smith