[1-4] Where can I learn about implementing Scheme interpreters and compilers?
There is no single book that is really comprehensive, so you will have
to combine reading the sources to the various free implementations
(e.g., Gambit [Feeley] and S48 [Rees]) with bits and pieces of tech
reports and various books.
Books about Scheme implementation include:
1. John Allen
"Anatomy of Lisp"
McGraw-Hill, 1978. 446 pages. ISBN 0-07-001115-X
2. Samuel Kamin
"Programming Languages, An Interpreter-Based Approach"
Addison-Wesley, Reading, Mass., 1990. ISBN 0-201-06824-9
Includes sources to several interpreters for Lisp-like
languages, and a pointer to sources via anonymous ftp.
3. Sharam Hekmatpour
"Lisp: A Portable Implementation"
Prentice Hall, 1985. ISBN 0-13-537490-X.
Describes a portable implementation of a small dynamic
Lisp interpreter (including C source code).
4. Peter Henderson
"Functional Programming: Application and Implementation"
Prentice-Hall (Englewood Cliffs, NJ), 1980. 355 pages.
5. Peter M. Kogge
"The Architecture of Symbolic Computers"
McGraw-Hill, 1991. ISBN 0-07-035596-7.
Includes sections on memory management, the SECD and
Warren Abstract Machines, and overviews of the various
Lisp Machine architectures.
6. Daniel P. Friedman, Mitchell Wand, and Christopher T. Haynes
"Essentials of Programming Languages"
MIT Press, 1992, 536 pages. ISBN 0-262-06145-7, $55.
Teaches fundamental concepts of programming language
design by using small interpreters as examples. Covers
most of the features of Scheme. Includes a discussion
of parameter passing techniques, object oriented languages,
and techniques for transforming interpreters to allow
their implementation in terms of any low-level language.
Also discusses scanners, parsers, and the derivation of
a compiler and virtual machine from an interpreter.
Source files available by anonymous ftp from
ftp.cs.indiana.edu:/pub/eopl/ (129.79.254.191) or from the
Scheme Repository in
ftp.cs.indiana.edu:/pub/scheme-repository/doc/lit/eopl
7. Peter Lee, editor, "Topics in Advanced Language Implementation",
The MIT Press, Cambridge, Mass., 1991.
Articles relevant to the implementation of functional
programming languages.
8. Also see the proceedings of the biannual ACM Lisp and Functional
Programming conferences, the implementation notes for CMU Common Lisp,
Peter Norvig's book ("Paradigms of AI Programming: Case Studies
in Common Lisp", Morgan Kaufmann, 1992. 946 pages. ISBN
1-55860-191-0), and SICP (Abelson & Sussman).
9. Christian Queinnec
"Les Langages Lisp"
InterEditions (in French), 1994. 500 pages.
ISBN 2-7296-0549-5, 61-2448-1. (?)
The book covers Lisp, Scheme and other related dialects,
their interpretation, semantics and compilation.
All of the programs described in the book are available by
anonymous ftp from
ftp.inria.fr:/INRIA/Projects/icsla/Books/LiSP94Sep05.tar.gz
For more information, see the book's URL
file://ftp.inria.fr/INRIA/Projects/icsla/WWW/LiSP.html
or contact the author at Christian.Queinnec@inria.fr
Technical reports and journal articles about Scheme implementation include:
Mitchell Wand and Daniel P. Friedman, "Compiling Lambda Expressions
Using Continuations and Factorizations", Journal of Computer Languages
3(1978), 241-263.
Guy Lewis Steele Jr., "Rabbit: A Compiler for Scheme", MIT AI Memo
474, Massachusetts Institute of Technology, Cambridge, MA, May 1978.
Guy Lewis Steele Jr., "Compiler Optimization Based on Viewing LAMBDA
as RENAME + GOTO", in "Artificial Intelligence: An MIT Perspective",
Patrick Henry Winston and Richard Henry Brown (eds.), MIT Press,
Cambridge, MA, 1980.
Jonathan A. Rees and Norman I. Adams, "T: A Dialect of Lisp or,
LAMBDA: The Ultimate Software Tool", Conference Record of the 1982 ACM
Symposium on Lisp and Functional Programming, 1982, 114-122.
R. Kent Dybvig, "C-Scheme", Computer Science Department Technical
Report #149 (MS Thesis), Indiana University, Bloomington, IA, 1983.
William Clinger, "The Scheme 311 compiler: An Exercise in Denotational
Semantics", Conference Record of the 1984 ACM Symposium on Lisp and
Functional Programming, 1984, 356-364.
Guillermo J. Rozas, "Liar, an Algol-like Compiler for Scheme", S.B.
Thesis, Department of Electrical Engineering and Computer Science,
Massachusetts Institute of Technology, January 1984.
David H. Bartley and John C. Jensen, "The Implementation of PC
Scheme", Proceedings of the 1986 ACM Conference on Lisp and Functional
Programming, 1986, 86-93.
David Kranz, Richard Kelsey, Jonathan A. Rees, Paul Hudak, James
Philbin and Norman I. Adams, "Orbit: An Optimizing Compiler for
Scheme", Proceedings of the SIGPLAN Notices '86 Symposium on Compiler
Construction, June 1986, 219-233. Published as SIGPLAN Notices 21(7),
July 1986.
Marc Feeley, "Deux Approches a' L'implantation du Language Scheme",
M.Sc. Thesis, De'partement d'Informatique et de Recherche
Ope'rationelle, University of Montreal, May 1986.
R. Kent Dybvig, "Three Implementation Models for Scheme", Department
of Computer Science Technical Report #87-011 (Ph.D. Dissertation),
University of North Carolina at Chapel Hill, Chapel Hill, North
Carolina, April 1987.
William D. Clinger, Anne H. Hartheimer and Eric M. Ost,
"Implementation Strategies for Continuations", Conference Record of
the 1988 ACM Conference on Lisp and Functional Programming, August
1988, 124-131.
David Kranz, "Orbit: An Optimizing Compiler for Scheme", Computer
Science Technical report #632 (Ph.D. Dissertation), Yale University,
1988.
Joel F. Bartlett, "SCHEME->C a Portable Scheme-to-C Compiler",
Research Report 89/1, Dec. Western Research Laboratory, Palo Alto, CA,
January 1989.
Marc Feeley and James S. Miller, "A Parallel Virtual Machine for
Efficient Scheme Compilation", Proceedings of the 1990 ACM Conference
on Lisp and Functional Programming, Nice, France, June 1990.
Chris Hanson, "Efficient Stack Allocation for Tail-Recursive
Languages", Proceedings of the 1990 ACM Conference on Lisp and
Functional Programming, Nice, France, June 1990.
Robert Hieb, R. Kent Dybvig and Carl Bruggeman, "Representing Control
in the Presence of First-Class Continuations", Proceedings of the
SIGPLAN Notices '90 Conference on Programming Language Design and
Implementation, White Plains, New York, June 1990, 66-77.
Guillermo Rozas, "Taming the Y Operator", Proceedings of the 1992 ACM
Conference on Lisp and Functional Programming, San Francisco, CA,
June 1992, 226-234.
Dan Teodosiu, "HARE: An Optimizing Portable Compiler for Scheme", ACM
Sigplan Notices 26(1), January 1991.
Go Back Up
Go To Previous
Go To Next