So I recently discovered programming.reddit.com, a site that lists the latest and greatest programming articles and blogs that other people have read and rated, and I noticed a trend: a lot of the articles are about functional programming languages. This piqued my curiosity. After all, what's the big deal? I learned some Scheme in college, and it was weird compared to programming in an imperative style. Besides, functional languages don't even have objects, so they don't have the same power of abstraction, right? (wrong, and wrong again.) Well, since then, I've read several fascinating articles on the advantages of functional programming languages, and this article was one of the best. Then I learned that Microsoft is researching a functional language for .NET, and that many of C# 3.0's features were lifted from it.
So now I'm wondering, will functional programming become the way of the future? I've decided that it's important enough to acquaint myself with functional programming techniques. I surveyed many functional languages, trying to decide which one to choose.
I want to learn F# eventually, but I don't want it to be my first functional language, because it allows a mixture of functional and imperative programming, and while that might be a powerful combination once I'm fluent in both styles, I don't want to be tempted to fall into familiar imperative patterns while I learn this new style of programming.
Clean looks pretty nice; it performed admirably well for a functional language in the Computer Language Shootout, and it even has its own IDE written entirely in Clean! It is a modern language, but its development and usage isn't as widespread as Haskell's, below.
At long last, I come to Haskell. Haskell is a pure functional language, so I won't have the crutch of imperative programming to fall back on. It was designed to be an open standard, consolidating existing functional languages into a common one as a basis for future language design, which also means that it will be an epicenter of new language developments. While the project to create a Haskell IDE written in Haskell is still underway, there is a Haskell plugin for Visual Studio, which is still pre-release, but the author feels that it's getting close.
In the end, I've decided to pursue learning Haskell first, and then probably F#. If I have any great epiphanies, either for or against functional programming, I'll be sure to post my thoughts here.