One of the blogs I read has been going over the fundamentals of Functional programming lately, and it's gotten me a bit more interested. Then, someone posted a question here that seems like a good fit for recursion/functional programming, which got me thinking about Functional languages again. I'd like to learn one, but now I need to pick one to start learning.
The main Functional languages I hear about are:
- F#
- OCaml (and other ML variations)
- Lisp/Scheme
I used SML in one of my courses in school, and Lisp in a couple others, but I don't really remember much about them at all. I figure learning any one of them will make picking up the others much easier, so it might not matter too much which language I start with, but maybe there's one that's easier to pick up or more generally useful.
I know F# integrates nicely with the rest of .Net, but I'm don't really use .Net at all (I've done a small amount of C#, but that's it). There's Scala, which integrates with the JVM, but my understanding is that it doesn't support some "functional" constructs like tail-call optimization.
So, I figure I'll ask the cloud. What functional language would you recommend I try learning first? What are the pros and cons of the various options?