gensym scope
public text v1 · immutable(defmacro lambda (variable expression)
(labels ((lambda-generate (variable expression x)
(loop for y in expression
if (eq y variable)
collect x
else if (and (listp y) (eq (car y) 'lambda) (not (eq (cadr y) variable)))
collect `(lambda ,(cadr y) ,(lambda-generate variable (caddr y) x))
else collect y)))
(cons 'primitive-lambda (lambda-generate variable expression (gensym)))))