Haskell recently became trendy in the Perl community after Audrey Tang
prototyped a compiler for Perl 6 at an incredible pace. With this level
of interest, and the frequent exhortation to "learn a new programming
language every year", I decided to learn it.
It's slightly more difficult than it sounds. Occasionally you hear
people saying that Haskell is easy to learn and has pleasant syntax.
This is often said by people who study mathematics, marvelling at how
the syntax is so similar. My experience is slightly different.
To give an idea of where I'm starting from, I'm not especially
accomplished in Functional Programming: I love those elements that have
percolated into Perl – join, map, grep, closures. But when I try to
write large chunks of code in functional style I sometimes end up with a
hybrid mess of OO/FP (not itself a completely bad thing of itself I
think) and the result can leave a bit to be desired. I've skimmed all
of Dominus's Higher Order Perl, but so far only read a couple of the
chapters in depth.
There are many tutorials on Haskell. There is the "Gentle introduction
to Haskell" in which the word "gentle" is a cruel and sadistic joke.
The best of the online tutorials appears to be "Yet Another Haskell
Tutorial": I found that the text is unclear and confusing, but the
exercises are rather well thought out.
There are lots of tutorials about Monads. I wish I hadn't read any of
them. This time around, I'm going to try to learn Haskell syntax and
practise using it before trying to work out what they mean. (That is,
I'm going to use the definition "Monads are what you use in Haskell to
do IO", and like it, whether it's right or not.)
I'm going to go through Hudak's "The Haskell School of Expression",
which nnunley recommended some time back. I've previewed/skimmed most
of the text, but I haven't gone through it completing all the exercises.
This is what I'm going to do now, and hopefully journal here!