|
|
|
|
|
by tromp
1367 days ago
|
|
Lambda Calculus is computationally foundational. Lisp carries a lot of non-foundational baggage, some of which (like number primitives) makes it far more efficient for running on actual hardware. > As such, Lisp's identification of CONS/CAR/CDR/COND as a sufficient set of primitives for a universal Turing machine You don't need any of those for universality. They are trivially expressible in Lambda Calculus. LAMBDA is really the only necessary primitive. |
|
[UPDATE] One idea I've been kicking around for a long time but have not yet acted on is to explore using abstract associative maps as a primitive and see how far that gets you. I suspect this would be a significant win in terms of comprehensibility of code. The foundational axiom would be something like:
((amap k1 v2 k2 v2 ... kn vn ...) kn) == vn
So IF, for example, can be written as (amap true [then] false [else]), CONS is (amap car [left] cdr [right]), etc.
Or something like that.
Oh, yeah, Lisp also introduced symbols as first-class entities. That's a big win.