One of a series of tutorials about Scheme in general
and the Wraith Scheme interpreter in particular.
Copyright © 2011
Jay Reynolds Freeman,
all rights reserved.
Personal Web Site:
This tutorial duplicates material from the Wraith Scheme Help File. I just
wanted to make sure you knew it was there.
These items are all from my bookshelves or download directories. Many
have more recent editions.
- Harold Abelson, Gerald Jay Sussman and Julie Sussman,
1985. Structure and Interpretation of Computer Programs, MIT.
This is an introductory book on computer science for very bright
college students. It both teaches and uses an earlier version of
Scheme than that described in the R3 report, but the differences are
minor. It features many excellent examples of programming in Lisp in
general and in Scheme in particular. The early sections are a good
introduction to the language, the later ones show well just how
powerful it is.
William Clinger, "The Semantics of Scheme", in Byte 13,
no. 2, 221-227 (February 1988). One of several introductory articles
on Lisp-class languages in this issue of Byte.
William Clinger and Jonathan A. Rees (editors), 1991. "The revised 4 report
on the algorithmic language Scheme", Lisp Pointers 4(3), ACM.
The RN reports (N = 3, 4, 5 ...) define Scheme. They are manuals, not
tutorials -- readable once you have some background in any Lisp, and
invaluable for specific details, but likely to intimidate a beginner.
I strongly recommend that you get copies anyway.
- R. Kent Dybvig, 1987, and subsequent editions. The Scheme
Programming Language, Prentice-Hall. The third edition is MIT
Press, 2003. An outstanding work describing Scheme. Later editions
describe the "R6" variety of Scheme; thus they are perhaps less
directly appropriate for learning Wraith Scheme, which is an "R5"
Daniel P. Friedman, William E. Byrd and Oleg Kiselyov, 2005.
The Reasoned Schemer, MIT. Scheme integrated with logic
- Daniel P. Friedman and Matthias Felleisen, 1974, 1986, 1987,
and subsequent editions. The Little Lisper, MIT. An
introductory book on programming in a style appropriate to Lisp, as a
programmed text. The more recent editions use a dialect of Scheme as
the language in which the examples and discussion are presented.
- Richard Kelsey, William Clinger and Jonathan Rees (editors), 20
February 1998. "Revised5 Report on the Algorithmic Language Scheme".
Available on several Internet sites, such as
Jonathan Rees, "The Scheme of Things: The June Meeting",
Lisp Pointers V(4) (October-December 1992).
J. Rees and W. Clinger (editors), "Revised3 Report on the Algorithmic
Language Scheme", ACM SIGPLAN Notices 21, no. 12, 37-79 (December
1986); also an MIT Technical Report.
- George Springer and Daniel P. Friedman, 1989. Scheme and
the Art of Programming, McGraw-Hill. A good introduction to
programming and to Scheme. More elementary than Ableson, Sussman and
These items are all from my bookshelves. Many have more recent
Harold Abelson and Gerald Jay Sussman, "Lisp: A Language for
Stratified Design", in Byte (magazine) 13, no. 2, 207-218
(February 1988). One of several introductory articles on Lisp-class
languages in this issue of Byte.
John Allen, 1978. Anatomy of Lisp, McGraw-Hill. An oldie but a
goodie. This rather advanced text describes Lisp mechanisms and data
structures in considerable detail, with attention both to theory and
to practice. Not for the faint of heart.
Eugene Charniak, Christopher K. Riesbeck and Drew V. McDermott, 1980.
Artificial Intelligence Programming, Lawrence Erlbaum Associates,
Publishers. An oldie but a goodie. The first section is titled
"Advanced Lisp Programming", but after that it gets harder.
Peter Henderson, 1980. Functional Programming Application and
Implementation, Prentice-Hall. An outstanding book on the
theory, design and implementation of a class of Lisp-like functional
programming languages. Wraith Scheme was originally based on the
implementation of an SECD machine described herein. I found the book
to be somewhat a "sleeper": I almost stopped reading it because the
material in the first few chapters seemed elementary and familiar. I
am glad I continued.
Samuel N. Kamin, 1990. Programming Languages: An
Interpreter-Based Approach, Addison-Wesley. How to implement
any language you like as long as it's Lisp. Well, not really: This
book gives miniature, subset implementations of a representative
selection of modern programming languages, all of whose syntaxes have
been modified to be Lisp-like (prefix notation with lots of
parentheses). The common syntax highlights the differences in
semantics. The languages covered include a rather standard simple
Lisp as well as simple subset of Scheme.
Guy L. Steele Jr., 1984. Common Lisp, Digital Press. The definitive
guide to that dialect of Lisp which has the greatest claim to being a
standard. As a manual, the book is excellent, but it is neither a
tutorial nor an introduction. There is a revision (1990), even
thicker than the original, that goes into more detail on such special
features as the Common Lisp Object-Oriented Programming System.
David S. Touretzky, "How Lisp Has Changed", in Byte
(magazine) 13, no 2, 229-234 (February 1988). One of several
introductory articles on Lisp-class languages in this issue of Byte.
- Patrick Henry Winston and Berthold Klaus Paul Horn, 1981, and
subsequent editions. Lisp, Addison-Wesley. This rather
venerable tome is still a good introduction to Lisp and to what you
can do with the language. The first edition uses the "MACLisp"
dialect, which is no longer widely used (unless you have in your
garage a DEC-20 mainframe or a Symbolics 36XX with down-rev software),
but I believe that subsequent editions use Common Lisp. I learned
Lisp with this book and a DEC-20. No, not in my garage. (Though I do
have a friend who used to have a DEC-20 in her garage.)
Douglas R. Hofstadter, 1979. Goedel, Escher, Bach, Basic Books. A
thoughtful and deep book that deals (among other things) with some
interesting and profound concepts that are part of computer science,
and with other interesting and profound concepts that would be part of
computer science if anyone could figure out how to work them in.
- Richard Jones and Rafael Lins, 1996. Garbage Collection:
Algorithms for Automatic Dynamic Memory Management, Wiley. An
oldie but a goodie.
- Tracy Kidder, 1981. The Soul of a New Machine, Little,
Brown and Company. Everyone contemplating a career in the computer
industry should read this book, the better to recognize job offers
from places like this. What you do when you do get such an offer is
up to you: I recommend you accept. But remember, misery loves
- Pamela McCorduck, 2004. Machines Who Think (25th-anniversary
update), A. K. Peters. Well-informed and thoroughly readable
history of artificial intelligence.
- David A. Mindell, 2008. Digital Apollo: Human and Machine
in Spaceflight, MIT. Long ago, in a galaxy far, far away, the
first digital computer used in an aerospace vehicle that carried a
crew flew on board the first spacecraft to visit another world. The
whole Apollo flight computer was rather less capable than most of
today's five-dollar microcontrollers, but the interface design for it
was challenging, and figuring out what it would do and how the crew
would interact with it was more so. It was also robust: Could your
laptop take a lightning strike and reboot without a blink in a
fraction of a second?
- Dr. Seuss, 1955. On Beyond Zebra, Random House. As
this classic children's book so clearly demonstrates, a language should
allow you to express not only things you can think of, but also things
you could not possibly have thought of if you hadn't learned it.
- P. W. Singer, 2009. Wired For War: The Robotics Revolution
and Conflict in the Twenty-first Century, Penguin. A
thought-provoking read about some of the scarier aspects of artificial
intelligence. Military robots are widespread, effective, sometimes
already have autonomous authority to shoot, and are in general
specifically designed to disobey Asimov's three laws of robotics.
- Guy Steele, 1983. The Hacker's Dictionary, Harper and
Row. A funny and quite accurate guide to the jargon of the best of
the best of computer scientists. This dialect is to programmers what
Chuck Yeager's drawl is to test pilots. I thought the book was a joke
until I joined an artificial intelligence lab and found everybody
really did talk that way. In this context, incidentally, "hacker" has
a much broader and more respectable meaning than its popular use as a
synonym for "computer criminal". Virus weenies and digital peeping
Toms do not deserve so honorable a label.
- Edward R. Tufte, 1983. The Visual Display of Quantitative
Information, Graphics Press.
- Edward R. Tufte, 1990. Envisioning
Information, Graphics Press.
These books are the main reason I laugh uproariously whenever anyone
tells me that some computer or program has decent graphics or a decent
user interface. Few books on computer graphics or computer interfaces
mention any of Tufte's works; perhaps the authors are too embarrassed.
- David Michael Ungar, 1987. The Design and Evaluation of a High
Performance Smalltalk System, MIT. If you read the
table of contents and the back cover casually, you might think that
this book is about implementing Smalltalk on a chip. Actually, the
lion's share of the text deals with good and better garbage collection
-- Jay Reynolds Freeman (Jay_Reynolds_Freeman@mac.com)