Anyone who knows me personally knows that I am a huge Clojure fan. I could go on and on about why it’s the best; the regularity, the macros, ClojureScript, core.logic, etc. etc.
But last week I attended LambdaJam, which was awesome by the way, and I came back with a different opinion. No, I don’t think Haskell or Erlang tops out Clojure, I’m still probably going to reach for Leiningen for all my personal projects. But I learned that it’s a good idea to keep an eye on other languages, since no language will ever be so good that you never need to touch anything else.
In particular I learned the joy of the APL based languages, especially J. I learned that the F# people have a novel way of dealing with statically typing external resources via type providers, and I learned that Haskell can indeed be tight and clean despite what all those monad tutorials imply. I will probably take each of these subjects apart in separate posts in the future, I’m still trying to pick up bits and pieces of my thoughts after several intense key notes overloaded my brain.
What’s the take away? That functional languages are a lot more diverse than most OOP/procedural languages, and that there’s a lot that can be learned from them. So instead of picking your favorite and only learning that, you really should try to learn several to cover your bases.