3 ms·
You and the other mortals picked up the idea somewhere that Lisp is an implementation of lambda calculus. It was almost totally incorrect. 1. Lambda calculus h
by kazinator 2y ago
You and the other mortals picked up the idea somewhere that Lisp is an implementation of lambda calculus. It was almost totally incorrect.
1. Lambda calculus has only function terms. Lisp has many types: symbols, strings, conses, vectors, characters, integers, floating-point numbers, ...
2. Lambda calculus has no list processing.
3. Lambda calculus has no quote operator to operate on pieces of its own syntax as data. There is no straightforward way to write a meta-circular interpreter for lambda calculus in lambda calculus. (There are papers about it if you want to see how hard this is.) Lisp evaluation defined in Lisp before it was even implemented, in a small number of definitions.
4. Lambda calculus has no functions with optional arguments, or variadic functions. Only functions of one argument, which is required (using currying to simulate more arguments).
5. Lambda calculus has no dynamic control transfers: throw/catch, restarts; no object system; no interactivity.
6. Lambda calculus has no symbols and no named entities: no global function environment. No dynamic/global variables. No mutable variables. No "goto" analogous to Common Lisp tagbody/go.
- Y_Y 2y agoHere is a nice article about lambda calculus self-interpreters: http://anthonylorenhart.com/2021-09-04-Extremely-Simple-Self-Interpretation/ http://anthonylorenhart.com/2021-09-04-Extremely-Simple-Self... tromp is the local expert around here and may have something more enlightening to say.