Lisp in Small PiecesCambridge University Press, 4 déc. 2003 This is a comprehensive account of the semantics and the implementation of the whole Lisp family of languages, namely Lisp, Scheme and related dialects. It describes 11 interpreters and 2 compilers, including very recent techniques of interpretation and compilation. The book is in two parts. The first starts from a simple evaluation function and enriches it with multiple name spaces, continuations and side-effects with commented variants, while at the same time the language used to define these features is reduced to a simple lambda-calculus. Denotational semantics is then naturally introduced. The second part focuses more on implementation techniques and discusses precompilation for fast interpretation: threaded code or bytecode; compilation towards C. Some extensions are also described such as dynamic evaluation, reflection, macros and objects. This will become the new standard reference for people wanting to know more about the Lisp family of languages: how they work, how they are implemented, what their variants are and why such variants exist. The full code is supplied (and also available over the Net). A large bibliography is given as well as a considerable number of exercises. Thus it may also be used by students to accompany second courses on Lisp or Scheme. |
Table des matières
Lisp 1 2 ω 2 1 Lisp | |
3 | |
4 | |
Denotational Semantics 5 1 A Brief Review of λCalculus | |
Scheme | |
Fast Interpretation 6 1 A Fast Interpreter 6 1 1 Migration of Denotations | |
Evaluation Reflection 8 1 Programs and Values | |
Their Use Abuse 9 1 Preparation for Macros | |
Compiling intoC 10 1 Objectification 10 2 Code Walking 10 3 Introducing Boxes | |
Essence of an Object System | |
Answers to Exercises | |
Bibliography | |
Compilation | |
Autres éditions - Tout afficher
Expressions et termes fréquents
abstraction activation records allocate arguments arity assignment associated Bigloo binding Boolean bytes cadr call/cc captured chapter closure COMMON LISP compiler computation Consequently continuation created define definition denotation denotational semantics dotted pairs dynamic binding dynamic environment dynamic variables error escape EULISP eval evaluation example execution Exercise expander expression fact fenv fields functional application global environment global variable handle handler Here’s implementation initial instructions interaction loop interpreter inthe introduce invoke lambda form language Let’s letrec lexical environment likethis macro expansion means memory MEROON MEROONET modify mutable mutually recursive object ofthe possible preceding predefined predicate pretreatment primitive problem program counter quotation recursive referential transparency represented result Scheme semantics sequence Sexpression side effects simple simulate special form stack symbol syntactic syntax tail recursion thefunction tothe transformation variable arity vector verify we’ll we’re write