I want to get good at Haskell some day, but to what end?
Yes - and although we might be drifting off topic, this stuff is so arcane, that we probably wouldn't be able to hijack this thread with it!
Talk about a "secret language"
Haskell's syntax is not much harder than that of, say, Python.
Yes, I stand corrected, I should have said "lexically" difficult (see sample code below).
If you're mathematically inclined, Haskell has great symbolic abilities, as you probably well know. Often, when I have to do a matlab, R, or Mathematica formula, I try to figure out how to do it in Haskell too. Differential equations, for example, just fly off the keyboard, but then a week later look like an alien visitation.
It's a subtle, tough language - but probably one of the best, most wide open I've ever studied (been coding since 1974, so I've seen a few
. There's two things about Haskell, well probably any FP, that take getting used to: that variables really aren't variable and that consistently aiming towards the "pointfree" coding style is actually healthier than using syntactically embedded data. The former can mortally wound a procedural coder, while the latter may make your eyes cross, if you weren't weaned on LISP. (Curses to the Oppressive Parenthesis, Praise Be the White Space Significance!)
I think I'm gonna dink around with Xmonad just to support it's Haskell roots...
here's two of my favorites:
-- fibonacci sequence
unfoldr (\(f1,f2) -> Just (f1,(f2,f1+f2))) (0,1)
fibs = 0:1:zipWith (+) fibs (tail fibs)
fib = 0:scanl (+) 1 fib
-- pascal triangle
pascal = iterate (\row -> zipWith (+) ( ++ row) (row ++ )) 
Clipped directly from http://www.haskell.org/haskellwiki/Blow_your_mind#Monad_magic