If you want to go all the way into functional programming then I'd recommend Haskell. Erlang or OCaml would be good choices too.
Quote:Original post by johnfarris
Monads are no harder to understand than pointers, or recursive functions, or any other programming concept.
I agree. I think all the nuclear waste metaphors and stuff people put in their tutorials just confuse people. If you learn algebraic data types, type classes and higher order functions then monads should be straightforward. A monad is just an instance of the Monad type class satisfying 3 rules.
And until you learn those things and so can understand monads properly, there is The IO Monad for People who Simply Don't Care (you need to use the IO monad for any IO your program does).