I have a bit of a love-hate relationship with The Little Schemer. It reminds me of GÃ¶del, Escher, Bach in ways I can’t quite explain. The book’s Socratic dialogue seems clever at first, but seems forced as the book progresses. My main issue with it is that what the author finds tricky may be trivial to the reader. The opposite is also true. In a truly Socratic discussion, this would pose little problem, as the individuals would seek to match impedances, but the book offers little opportunity in this regard.
I am not convinced it is an optimal introduction to Scheme for the non-programmer. The derivation of the applicative order combinator Y (which may in fact, in this context, be Z) is a bit obtuse; it shows the decay of the method of presentation quite effectively. The discourse on partial functions and unnatural recursion (concluding with fanfare in a discussion of the halting problem) is verbose to the point of tedium. My overall feeling is that it’s a very elegant way to introduce the earlier material in the book, but that it breaks down when things start to get a bit hairy.
I don’t want to give the wrong impression; I enjoyed the book, but only the first half provides an introductory text. The remainder requires careful study, and is going to be more comfortable for those with other functional programming or lambda calculus experience. I think it would be an excellent self-study guide alongside a course on programming with Scheme. Alternately, this would provide an excellent tool interleaved with the pages of Structure and Interpretation of Computer Programs. I’ll probably hit The Seasoned Schemer at some point, but I need a break. 7/10.