
On 1/30/12 3:54 PM, Roman Cheplyaka wrote:
Makes sense; but doesn't making the monad abstract and putting all functions in the monad address the fragility issue?
The primary issue with monads is that the syntax is extremely cumbersome for the expected use case. It'd be like paranoid C where, since order of evaluation is unspecified, all subexpressions are floated out into let-bindings. At that point (a) the verbosity is ugly, (b) the code is much harder to follow, and (c) it's all too easy to introduce errors where you use x instead of x' or the like. The semantic model of monads just isn't a good fit for this domain. There really aren't any side effects going on, there's no sequencing of actions, there's no "little language" that's being implemented,... I love me some monads and all, but they just don't fit here. -- Live well, ~wren