>>2
We could have a meaningful discussion here
1 first so we have something to say.
I think monads are useful for certain abstractions, just like normal function composition. For instance in a parser library in Scheme I'm writing it's useful to map the current possible matches, which include a state of what is left to match, over matching the rest of the pattern. Writing this out directly is quite messy, but introducing a bind function cleans it up considerably.
Of course the big deal Nomads have with monads is that they ``tame side effects''. One problem I have with this is that you need a type system to automatically lift unrelated functions into the monad. Another is that compared to normal side effects they are a pain to use. So IMO using a side-effectful language with pure parts is a better idea than using a pure language with side-effectful parts.
(On an unrelated note, s/side-effectful/eager/ s/pure/lazy/ holds true too.)
1 Yeah right.