putting Haskell down

I started toying with Haskell in 2006. I picked up the "gentle introduction", was immediately blown away, and recalled why I was so briefly taken with miranda in college. Further into the gentle introduction, I became confused and frustrated. I put it down. I picked it back up after a couple of months and ploughed deeper into it, attempting to build toy programs, with some limited success. Over the years I contributed some trivial packages to hackage that didn't contain any earth-shattering innovations, but did address some basic practical applications that had been overlooked.

As time went on, Haskell seemed to be snowballing. I jumped on xmonad and was hugely impressed (and still use it). I devoured real world Haskell. I cheered on Haskell in forums, I advocated it to friends. I did everything I could to arrive at some point where Haskell would reward me for my loyalty and hard work.

That time never really arrived. I wasn't expert enough to sell myself as one of the few elite Haskell masters. And I couldn't really advocate it to my coworkers. It had taken me years to reach an intermediate stage of Haskell proficiency...how do you convince someone in an industrial setting to undertake a similar journey?

Even then, I soldiered on. Haskell was definitely the tool of choice for programming puzzles, which I love to tackle. with very little emphasis on strict resource or performance demands, and typically having no requirements for interfacing to existing tools, puzzles provide an opportunity for a language to show off its ability to grapple with algorithmic problems. Some of these puzzle solutions would periodically manifest some performance or resource issue that reminded me why I can't bring myself to apply Haskell to real daily coding, but since a puzzle is contrived anyway, I was able to shrug it off. Haskell and I remained friendly on these terms for about a year or so, bringing me to today.

So here I am...not moving forward substantially with Haskell, and probably putting it back on the shelf to focus on other tools. I thought I would enumerate some of the positives and negatives so that others might be able to get some value out of the reflections of someone who put in the time to try to tackle Haskell on its own terms.



ways forward?

Haskell or something inspired by it could still be a dominant industrial language without sacrificing too many of its cool features.

To move forward at this point requires that Haskell be redefined in a way that breaks backward compatibility. I had high hope that the "Haskell prime" effort might deliver this, but the goals there seemed to be a modest folding in of a few pragmas. I advocate more sweeping changes.

I'm not that enthusiastic that any of the above will ever happen, mostly because the most-skilled and best informed Haskell masters have internalized these problems and the various hacks to address them.

In the meantime, I'm picking up Racket and Rust more often. Racket gives me functional goodies and a willingness to make sweeping changes (like Typed Racket) to meet the needs of the future. Rust looks like a fantastic halfway point between Go and Haskell that provides a lot of type goodies out of the box.

last update 2013-01-09