3 ms·
Well, lambda calculus is Turing complete, so you could just stick with a call-by-value version of that. However, you'd want to add macros if you wanted to exten
by procrastitron 17y ago
Well, lambda calculus is Turing complete, so you could just stick with a call-by-value version of that. However, you'd want to add macros if you wanted to extend the syntax of the language. Since you mentioned car and cdr in lambdas, they'd be defined like this:
NIL = (lambda (x) (lambda (y) y))
CONS = (lambda (ar) (lambda (dr) (lambda (op) (op ar dr))))
CAR = (lambda (expr) (expr (lambda (ar dr) ar)))
CDR = (lambda (expr) (expr (lambda (ar dr) dr)))