I've been an OO/procedural guy my whole career except in school where I did a lot of logic programming (Prolog). I work on an amazing variety of projects (freelancer) and so I don't want the tools I know and understand to hold me back from using the right tool for the job. I've decided I should know a functional programming language.
I've narrowed the field to Haskell and Erlang. What are the pros and cons, advantages and disadvantages, and major trade offs of Haskell and Erlang? How do I decide in a rational way, which is the better path? This is a big time investment, so I'd like to chose wisely.
Is there a good case to be made for something else entirely? F#, Scala OCaml?
(BTW, I'm normally a Ruby/C/Obj.C guy, so I'm not terribly impressed or dependent on the JVM as a runtime. It's completely neutral to me. It's a fine runtime, I don't hold it for or against a language. I don't use Microsoft products though, so a .NET runtime would be a negative.)
UPDATE: Thanks for all the great feedback! After reading all the answers here, and thinking about it for awhile, and checking out the excellent Try Haskell and Try Erlang, I've decided to learn Erlang. Both seem like fantastic options, but as an old Prolog guy, the Erlang syntax seems more logical and readable and less foreign to me. I'm also pretty excited about Erlang's message based concurrency versus Haskell's transactional memory. As on OO guy, messaging just makes a lot of sense to me. Wish me luck!