Skip to content

Instantly share code, notes, and snippets.

@osa1
Created March 22, 2012 12:30
Show Gist options
  • Save osa1/2158055 to your computer and use it in GitHub Desktop.
Save osa1/2158055 to your computer and use it in GitHub Desktop.
lambda
(defun eval (e env)
(cond ((symbolp e) (cadr (assoc e env)))
((eql (car e) 'lambda) (cons e env))
(t (apply (eval (car e) env) (eval (cadr e) env)))))
(defun apply (f x)
(eval (cddr (car f)) (cons (list (cadr (car f)) x) (cdr f))))
;; CL-USER> (eval '(((lambda (f) (lambda (x) (f x))) (lambda (a) a)) (lambda (b) b)) '())
;; ((LAMBDA (B) B))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment