THE SCHEME PROGRAMMING LANGUAGE
Second Edition

Written by R. Kent Dybvig

Illustrations by Jean-Pierre Hébert

From the back cover

Scheme is a general purpose programming language descended from Algol and Lisp. Because it is conceptually clean and simple, it is an easy language to learn. At the same time, it is a powerful language, and full mastery of its power requires careful study and practice. Scheme is used widely in computing education and research, as well as for a broad spectrum of industrial applications ranging from graphical user interfaces and language compilers to virtual reality engines, web navigators, and enterprise computing solutions.

This revised edition of The Scheme Programming Language provides an introduction to the language for readers with some programming experience. Beginning with a gentle introduction for novice Scheme programmers, it leads the reader through a series of progressively more difficult examples that introduce each of the major features of the language. Advanced concepts and features are thoroughly covered with examples and exercises appropriate even for more experienced programmers.

The introduction is followed by a set of reference chapters that cover Scheme's binding forms, control structures, operations on objects, input and output operations, and syntactic extension facilities. A final chapter is devoted to a collection of sample programs or packages and includes an overview of each package with additional examples and exercises.

R. Kent Dybvig is Associate Professor of Computer Science at Indiana University and principal developer of Chez Scheme, the premier implementation of Scheme.

About the cover illustration: This illustration was created by Jean-Pierre Hébert with the help of a Scheme program. It represents the complex and recursive nature of programming and the elegance of programming in Scheme.

About the typesetting process

The printed version of this book was created with LaTeX from extended LaTeX sources with the help of a preprocessor written in Scheme. The preprocessor handles extensions for incorporating arbitrary verbatim Scheme code and various other features not directly supported by LaTeX.

The HTML version was created from the preprocessed sources for the printed version by a separate Scheme program that performs a LaTeX to HTML conversion. In addition to the extended LaTeX source files, this program takes as input the .aux and .bbl files produced by a complete LaTeX/BibTeX run of the document in order to support labels and page references in the text, summary of forms, and index. As it runs, the program produces a .haux file containing urls for the labels, bibliographic entries, and index entries; as with LaTeX, a second run of the program is needed to achieve proper cross-referencing.

Most of the images and certain mathematical formulas included in the HTML version were produced with the help of LaTeX, dvips, ghostscript, and various programs from the netpbm library.