I occasionally like to pretend that I write in Scheme. It’s a language I very much admire. However, I tried the other day to write a reduce function in Scheme and was surprised and annoyed that certain language features were missing. I really miss pattern matching and partial application whenever I write Scheme. Maybe I should move to Haskell and be done with it — but then I'd have to start trying to understand monads.
There is a description about how partial application might be done in scheme:
http://www.eros-os.org/pipermail/e-lang/2002-June/006980.html
Fairly old, I know.
It turns out that monads are pretty easy both to use and understand. The problem is that the concept is kind of abstract to convey, so it is best to just start tackling particular monads. I suggest trying out parsec for a while, and then writing a simple combinator parser yourself. After you do that, monads should be easy to understand.
Amazing, I didn't heard about that until now. Thanks!