[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/ ( or from the
           Scheme Repository in 

   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
      For more information, see the book's URL
      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,

   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