All pastes #562378 Raw Edit

gensym scope

public text v1 · immutable
·published 2007-06-12 19:37 UTC
rendered paste body
(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)))))