Healthy living requires staying fit. And staying fit requires regular exercising. So I’ve decided it was time to learn a new programming language and have chosen Haskell. Why Haskell? The bottom line is that I think it has a few challenges for me along the way and I’m therefore most likely to learn a lot. The long answer goes like:

  • It’s an academic language (meaning that it’s been designed mostly by academics, not that it’s restricted to academic usage). I’ve been mostly exposed to industry-driven languages so far, seeing the differences in design (if there are) is probably going to be interesting.
  • It’s a purely functional language. Whereas I’m familiar with the functional theory (heck, I work on a Pi-Calculus engine) and have done some functional coding in Ruby or Javascript, I’ve never used a purely functional language since university.
  • I’m a clear proponent of dynamic languages and typing. Which doesn’t mean that I think static typing is always bad, just that, for me, dynamic typing is usually better. Haskell is based on a type system that sounds to me very much like static typing done right: type classes with powerful inference.
  • Haskell is lazy. Which means that it only executes what it feels like executing. Fortunately, it seems to be pretty smart at knowing what is necessary to be executed and what isn’t. This has interesting side effects (pun intended) like being able to support infinite lists. Not sure yet how useful that is but I intend to find out.
  • Haskell is monadic. Meaning that it found a nice way out in a functional world that’s not supposed to accept side effects (I/Os being one big source of side effects that are hard to avoid).

There are a few other reasons for me to be interested in Haskell but these are the main ones. So I’ll go through some tutorials and see where these lead me. I have a small pet project that I’d like to implement in Haskell so the goal for me is really to write code and not only to read a few documents. I’ll let you know along the way what I find interesting, exciting or irritating and pass along a few tips.