
Meta-
Circularity
Didier Verna
Introduction
S-expressions
7 Axioms
Functions
Some utilities
The Miracle
Labels
Scoping
Wrap-up
LISP can be written in itself
Stephen B. Russell and Daniel J. Edwards
Here it is. . .
( defun e v a l ( exp env )
( cond
( ( atom exp ) ( assoc exp env ) )
( ( atom ( ca r exp ) )
( cond ( ( eq ’ quo te ( ca r exp ) ) ( cadr exp ) )
( ( eq ’ atom ( car exp ) ) ( atom ( eval ( cadr exp ) env ) ) )
( ( eq ’ eq ( ca r exp ) )
( eq ( eval ( cadr exp ) env ) ( eval ( ca ddr exp ) env ) ) )
( ( eq ’ car ( ca r exp ) ) ( ca r ( ev a l ( cadr exp ) env ) ) )
( ( eq ’ cdr ( ca r exp ) ) ( cd r ( ev a l ( cadr exp ) env ) ) )
( ( eq ’ cons ( car exp ) )
( cons ( eval ( cadr exp ) env ) ( eval ( ca ddr exp ) env ) ) )
( ( eq ’ cond ( car exp ) ) ( condeval ( cdr exp ) env ) )
( t ( eval ( cons ( assoc ( ca r exp ) env ) ( cd r exp ) ) env ) ) ) )
( ( eq ( caar exp ) ’ l a b e l )
( eval ( cons ( caddar exp ) ( cd r exp ) )
( cons ( l i s t ( cadar exp ) ( ca r exp ) ) env ) ) )
( ( eq ( caar exp ) ’ lambda )
( eval ( caddar exp )
( append ( p a i r ( cadar exp ) ( l i s t e v a l ( cdr exp ) env ) ) env ) ) ) ) )
36/60