Adam Petersen - Software Development Pages, Book Reviews Section
Start News Articles Book Reviews

Book Review

The Seasoned Schemer
by Daniel P. Friedman, Matthias Felleisen

ISBN: 026256100X
Publisher: The MIT Press
Pages: 224


I hold The Little Schemer as one of the best introductory books ever on computing and The Seasoned Schemer is a worthy successor. The difference is, this time I knew what to expect.

Like its predecessor, this book isn't about a certain language or syntax. Instead it teaches you how to think about programming. Whereas The Little Schemer focuses on teaching the mindset necessary to understand recursion, The Seasoned Schemer focuses on high-level functions and introduces more advanced concepts like closures and continuations.

Closures are a wonderful thing. Basically a closure captures the lexical environment of a lamba-expression. As the lamba-expression is executed, it is run in the captured environment. Contrast this with object orientation; instead of binding a variable to an object, the variable is bound to a function.

Continuations are one of those magical Scheme features (call-with-current-continuation) I was really curious about. The Seasoned Schemer introduces continuations in two steps. First I learn how to use continuations to escape from a deep recursive call to a surrounding context. In fact this is rather similar to exceptions in C++. However, continuations have a second usage, which is much more exciting; a continuation captures the execution state of a program and a continuation may be re-invoked from that point. Almost like a travel in time; let's start from a previous state again, this time with possibly different arguments.

In its inimitable way, The Seasoned Schemer teaches these concepts using a lot of food items in the examples (not always with the healthiest choice of menus). The text flows as a Socratic dialog between the reader and the authors. Besides being an absolutely brilliant book about computing, the teaching style alone makes it a very interesting read.

Reviewed April 2006


©2005 Adam Petersen adam@adamtornhill.com