Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Branch: master
Fetching contributors…

Cannot retrieve contributors at this time

86 lines (63 sloc) 3.49 KB
The Haskell book I want to read
I've spent a lot of time recently thinking about the Haskell book I'd
like to read. There's a surprising amount of buzz about Haskell in
the programming community; I'd guess that it's the most popular
aspirational language out there. But it's stuck in the negative sense
of "aspirational", in that few people actually make it past the first
step of merely hoping to learn the language.
The existing handful of books about Haskell are all aimed at teaching
programming to early undergraduate audiences, so they are ill-suited
to people who already have a background with imperative languages (the
pace is too slow, and they cover essentially no practical details of
writing real code). And while there's a huge body of introductory
material available on the web, you have to be both tremendously
motivated and skilled to find the "good stuff" and apply it to your
own learning needs.
I think of these as accidental reasons why Haskell is hard to learn.
There's no single good source you can turn to that provides a coherent
The great thing about not writing a book is that you can carefully
choose the audience you're not writing for, and thereby save yourself
a lot of hand-wringing over restricting the size of your potential
* They already know how to program. They're familiar with one or more
of the usual suspects: C, C++, Java, Ruby, Perl, or Python.
* Maybe they've done a little functional programming, but if so, it
was a long time ago.
* They're smart, and curious about what functional programming in
general, and Haskell in particular, might "buy" them.
So the broad goals of a Haskell book for such an audience might look
like this:
* The book is about writing software that lives in the real world.
* It is aimed at bright people who can already program.
* It introduces functional programming to people who have little or no
FP background. It describes how functional programming is a
discipline unto itself, much as object-oriented programming is.
* It talks about why functional programming is important; how it's
different; and that it's *fun*.
* It gets over the simple stuff pretty quickly. You're bright; you'll
pick it up. You want to write real applications, there's a lot to
* It talks about the double-edged sword that is lazy evaluation.
Reasoning about space and time usage can be hard.
* It contains two interwoven narratives. One is the conceptual story
of how to think functionally. The other is the concrete tale of
structuring, writing, debugging, testing, and optimising programs in
* It keeps at hand just how alien the material will feel to people
with imperative backgrounds. It carefully uses analogy and contrast
where possible.
* It talks about concurrency. Hooray STM!
* Since people need to know how to diddle regexps, use databases, deal
with web stuff, and write UIs, it discusses these subjects. But
these domains deserve *deep* coverage only when the ways you
approach them in Haskell are especially weird compared to the usual
imperative approaches.
There are a few non-goals, too.
* Language advocacy bugs the hell out of me. So enthusiasm is in, but
cheerleading is out.
* The book doesn't shy away from theory, because there's so much
beautiful literature around Haskell. However, the ultimate goal is
to show readers how to design and produce code.
* It avoids the Haskell language traps, by not going on too much about
parsers, backtracking search, or category theory.
Jump to Line
Something went wrong with that request. Please try again.