John Goerzen is a co-author of Real World Haskell. In a recent
interview with O'Reilly, he explained how the book came to be,
the special magic which makes Haskell worth learning, and how to
change your mindset to make learning possible. One of Haskell's
benefits is that you can use it as a purely functional language
-- but that's really different for people who've come up in the
imperative or object-oriented worlds. What does it take to learn
how to think in a pure fashion? Goerzen: That's probably the
single biggest mind-shift that you deal with coming from a
different language; that and laziness. Both of those are both
pretty big. As for how to learn about it, it's a lot of
relearning how to do some very basic things and then building
upon that. For instance, in imperative languages, you have for
loops and you have loops. There's a lot of having a variable
there and then incrementing it as you iterate over something. In
Haskell, you tend to take a recursive approach rather than that.
It can be a little bit