The L.i.S.P book and code
The exact title of this book stands for "Lisp in Small Pieces". This book
covers Lisp, Scheme and other related dialects, their interpretation,
semantics and compilation. To sum it up in a few figures:
11 interpreters and
This book was first written in French. It was published by
InterÉditions, under title "Les Langages Lisp". See
exact bibliographic reference
or cover page . Unfortunately this
edition is now out of press. A new (slightly revised) edition will be
issued by February 2007. It will bear a new title "Principes
d'implantation de Scheme et Lisp". See Paracamplus for more details.
The book also exists in English, published by
Cambridge University Press,
under title "Lisp in Small Pieces" (£40.00/$49.95). See exact
bibliographic reference or cover page.
The programs of
this book are available on the net. These programs used to run
with some Scheme systems around 1994.
Vu dans la presse !
From the news!
SKETCH OF THE TABLE OF CONTENTS
Chapter 1: The basic interpreter
(eval expression environment)
Chapter 2: Name spaces and Recursion
Some new interpreters introducing lexical and/or dynamic binding,
single or multiple namespaces, various brands of global environments.
Chapter 3: Escape, Continuation
A bunch of control operators (catch/throw, block/return-from,
unwind-protect, call/cc) all explained through an interpreter
written in OO style.
(eval exp env continuation)
Chapter 4: Side-effect
Assignment, data mutation and equality explained through another
interpreter where everything is coded by lambdas.
(eval exp env cont memory)
Chapter 5: Denotational Semantics
A simple currying of the previous interpreter which now appears as
((eval exp) env cont mem)
Numerous variants such as dynamic binding, global environments.
Chapter 6: Fast interpretation
Precompile expressions to speed up interpretation. Introduce
runtime representations of environment and continuations through
various interpreters such as
((eval exp lexical.env) runtime.env continuation),
((eval exp lexical.env) runtime.env)
((eval exp lexical.env))
Chapter 7: ByteCode compilation
Compile expressions into byte-code instructions; invent registers,
PC, stack and the like with still another compiler/interpreter
(bytecode-run (bytecode-compile exp lexical.env))
Chapter 8: Eval and other reflective features
A whole chapter on eval, its implementation and cost, in all the
previous interpreters/compilers. Also introduce
environments and a complete reflective interpreter.
Chapter 9: Macros
Everything you want to know on macros, macroexpansion, hygien etc.
in relation with (separate) compilation and interpretation. This
chapter contains another macro system.
Chapter 10: Compilation towards C
Another complete compiler from Scheme towards C and its runtime in C.
Chapter 11: An Object System
(named Meroonet )
The innards of an Object system (based on
Meroon ) in Scheme.
There are also corrected exercices, a bibliography and an index.
Updated by Christian.Queinnec@lip6.fr
$Id: LiSP.html,v 1.36 2007/01/15 15:17:40 queinnec Exp queinnec $