Name: anon 2011-12-03 1:42
I require an idea to program over the christmas break! Any ideas?
(defun evaluate (exp env)
(cond ((symbolp exp) (cdr (find exp env :key #'car)))
((atom exp) exp)
(t (case (car exp)
(lambda (lambda (args)
(evaluate (caddr exp)
(append (mapcar #'cons (cadr exp) args) env))))
(let (evaluate `((lambda ,(mapcar #'car (cadr exp)) ,(caddr exp))
,@(mapcar #'cadr (cadr exp)))
env))
(t (funcall (evaluate (car exp) env)
(mapcar #'(lambda (x) (evaluate x env))
(cdr exp))))))))