Tuesday, August 29, 2006

is haskell hot or not?

So, Haskell is one of those languages that I keep hearing great things about, but I'm still not convinced enough to take a long, serious look at it. A use.perl.org journal entry by Ziggy makes Haskell sure smell like nirvana. Then I see something like Algebraic Topology in Haskell over at dzone.com, and Damian Conway's turn of phrase from another context, "brain-meltingly complicated", comes to mind. Maybe the moral here is that once you adjust to monads and lazy evaluation and other unique features, you can use Haskell to manage any level of complexity you wish--there is no artificial limit on expressiveness. But I'm only speculating. The usual caveat applies: if you write your software too cleverly, you just might have to maintain it for life. Don't forget another factor too: a powerfully expressive language without the particular libraries you need simply isn't as practically useful as a lesser language with those libraries. On a common VM platform, any language can use any library, so this is admittedly becoming less of a concern.

Ziggy's post is really about a perceived (I don't believe that the majority of developers out there truly care at this point) mainstream rise of functional programming. He (she?) links to Joel on Software's Can Your Programming Language Do This? as an example, which by the way is a brilliantly concise but easily understood explanation of how convenient some functional programming features can be. I must say that I would prefer Ruby versions of his code snippets. Ziggy also links to Kingdom of Nouns, which I've commented on before. I wonder if the people who use Ruby as a poster child of not being a kingdom of nouns are self-aware enough to notice that everything in Ruby is a noun (object)?

Bonus observation: Adam Bien's Weblog says that you shouldn't compare Javascript/Ruby to Java. Why? Because as I said in "clash of programming language civilizations", the values are different.


  1. I hope I didn't put you off Haskell in any way. Algebraic topology is tricky stuff. The only trickiness in the code I wrote to compute Betti numbers is inherent to algebraic topology. I made no use of monads (well, I sneaked in a tiny use of one), lazy evaluation or funky datatypes. So don't be put off because algebraic topology is tricky.

    What's astonishing is that the language was expressive enough to compute something that usually requires a few hundred pages of mathematical prologue. That feature may or not be useful to you.

  2. Very good point. Algebraic topology probably is not a good example for beginners like me to dwell on, so I shouldn't have treated it as such.

    I shudder to think what the equivalent code would be in another language...