Yes, but not so much simplicity of syntax. I’m misled here by a superficial resemblance between the cultures of Haskell and Lisp. Both cultures are obsessed with mechanically processing code, and therefore want the language core to be as simple as possible. Since a minimal core is impractical to program in, both expect a larger, more useful language to be defined by translation to the core, so its complexity can be mechanically eliminated. And both consider the representation of code as text to be separate, at least in principle, from the core. So at first glance, it seems as if they should have the same attitude to syntactic complexity.
But they treat it quite differently. Lisp’s culture considers syntax unimportant, and therefore tries to make it as simple and transparent as possible, so it won’t prevent humans from seeing through it — because code is much more interesting than its textual representation. But Haskell’s culture considers syntax safely separate from the language core, and is therefore willing to tolerate complexity in it. Since it goes away without inflicting any complexity on the core, why shouldn’t it include whatever features are convenient?
It’s that (too frequent) time again … when I anxiously (and full of fickleness) wonder what language to increase familiarity with.
The last year, I learnt quite a bit of common lisp, or atleast enough to write a lot of exploratory code in, working with libraries, timing, profiling, improving, and so on.
I had a rude shock when I learnt from one of my Scheme heroes that he really just prefers Haskell now. WTF? But seriously, he makes good points, chief among which is the lack of confidence in refactoring existing lisp code.
But both have the same “lack of libraries” barrier (sure, you’d say, why don’t you build your own — but that’s not the point).
So I’ve been moving around among these, toying with some web-development style languages (and always recoiling from JS), when I suddenly realized that I have absolutely zero experience with any of the .Net languages.
So, (just thinking out loud here) why not learn me some F#, and kill two birds with one stone?