Learn You a Haskell for Great Good! A Beginner's Guide, by Miran Lipovaca, No Starch Press, April 2011, ISBN-10: 1593272839; ISBN-13: 978-1593272838, 376 pp
Abstract
The first thing that you will notice about this book is the clunky how-foreigners-speak-English title.And the second is the clunky illustration style.Of course, the word "clunky" demonstrates either my high-mindedness or my pomposity.Either way, these tropes really got in the way of my taking this book as seriously as it deserved."Comic" books on programming languages actually have a long pedigree.Kaufman's A FORTRAN Coloring Book has a Dr Seuss-ish feel.I used Alcock's Illustrating Basic (1977) for many years to teach non-specialists with the BBC Microcomputer.In our own noble discipline, Friedman's The Little LISPer (1974) predates both.In turn, this has spawned Friedman and Felleisen's The Little Schemer (1998) and Little MLer (1998).These older books have a gently whimsical feel.In contrast, I found Learn You a Haskell. . .considerably more abrasive in tone.Weak puns abound, as do geek culture references, for example to Mission Impossible and Star Trek and Terry Pratchett and spaghetti westerns."Stuff" is "cool."The "maximum" function is "awesome."We take a journey to "the top of Monad Mountain."Perhaps, the target readership will warm to this. 1 Luckily, for me at any rate, the author does not maintain this style throughout: most of the book is thoughtful and well-written.I think the illustrations also lack the charm of those in the earlier books.At best, they are mildly cute.At worst, they are offensive, in particular the scantily clad, curvaceous woman on p. 102 accompanying a phone book example, which only contains female names.Indeed, one of the few other representations of women, among a plethora of men and animals, is the "old lady" on p. 95.Really, sexism is not funny.This is 21st century: gender neutrality should be taken for granted in academic computing.Now, there is a generic problem with books about specific programming languages, or perhaps a family of problems.Do they assume that the reader already knows how to program in some other language?If so, which language?If not, then do they seek to teach some pedagogy of programming?If so, then which pedagogy?Learn You a Haskell. . . is aimed at readers with imperative programming experience in, say C++, Java, or Python.At the start, there is a very brief summary of key functional programming concepts from an imperative perspective.Thereafter, the book dives straight into interactive GHCi use and is driven by Haskell constructs.Thus, no clear discipline is offered to marshal an initial myriad of techniques to solve substantial problems.Of course, this is a fault of many functional programming texts, my own included.Overall, though, I think this book might prove hard going for self-study except for experienced programmers.Nonetheless, the book is well suited to accompany a taught course on Haskell, offering a strong and systematic emphasis throughout on the central notions of types and higher order constructs.Topics in functional programming, such as recursion, type polymorphism,