>>25
I've had cl-monad-macros.lisp open in Emacs all day today, ever since that post.
>>24
They're very useful in Haskell and ML-likes, but I think their benefit is deminished in stateful, non-lazy languages. I have no trouble straightforwardly translating most monadic code into stateful code in Lisps and other eagerly evaluated, non-pure languages. Monads do offer interesting abstractions and ways to reason about certain things, so some people may prefer their style to directly using side-effects. Other features like lazyness of continuations may be translatable directly to more 'normal' constructs, but that doesn't deny that they are able to represent certain problems in a more clear, elegant way than the code which directly implements it. For example, I think most people will agree that in languages which support maps and lambdas, mapping over a list, vector or some general sequence is nicer conceptually than iterating over it and building a new list, vector, sequence by hand (or possibly overwriting the old one?) - in some cases if you wrote the implementation directly, you may have to change more code, but if you used maps, you could just change some mapcar to a map or map-into, depending on your true intentions, without having to bother changing the underlying code which transforms each element.