Metacircular Semantics for Common Lisp Special Forms
Henry G. Baker. Metacircular Semantics for Common Lisp Special Forms. ACM SIGPLAN Lisp Pointers V, pp.11–20. 1992.
A response to the criticisms of McCarthy’s semantics for Common Lisp that it didn’t specify the behaviours of special forms, and of the standardisation process of adopting prose definitions that are too “lawyerly” for engineering.
The approach is to define the special forms in terms of other
constructions, for example if
in terms of nested lambda
abstractions to prevent execution of the unwanted branch. This is
both useful for understanding and a way of minimising the number
of under-defined special forms.
It suggests treating catch
/ throw
as basic, both because other
control-transfer forms can be expressed sing them and because it
emphasises the interactions that preclude Common Lisp having
continuations like Scheme’s. However there’s also an argument
pursued that some other structures (like values
) provide extra
information that can be useful for compilers looking to optimise.
It’s a deep exploration of the underpinnings of the language from
both theoretical and practical perspectives.