(cl:defmacro eval (e cl:&body b) (cl:let* ((env e) (body (cl:mapcar #'(cl:lambda (x) (cl:let ((arg1 (cl:car x)) (arg2 (cl:cdr x))) (cl:append (cl:list arg1 env) arg2))) b))) `(cl:progn ,@body))) (cl:defmacro eval2 (e cl:&body b) `(cl:let ((env ,e)) (cl:progn (cl:mapc #'cl:eval (cl:mapcar #'(cl:lambda (x) (cl:let ((arg1 (cl:car x)) (arg2 (cl:cdr x))) (cl:append (cl:list arg1 env) arg2))) ',b)) env)))