Plaster
New
List
Login
common-lisp
default
anonymous
2022.04.27 21:29:39
(defmacro foo1 (again &body body) (alexandria:with-gensyms (x) `(labels ((,x () (symbol-macrolet ((,again (,x))) ,@body))) (,x)))) (defmacro with-gensyms ((&rest varnames) &body body) `(let ,(mapcar (lambda (varname) `(,varname ',(gensym))) varnames) ,@body)) (defmacro foo2 (again &body body) (with-gensyms (x) `(labels ((,x () (symbol-macrolet ((,again (,x))) ,@body))) (,x)))) (defmacro user (foo-op) `(let ((i 0)) (,foo-op outer-again (print (list 'i i)) (let ((j 0)) (,foo-op inner-again (print (list 'j j)) (when (< j 3) (incf j) (when (< i 3) (incf i) outer-again) inner-again)))))) (defun test1 () (user foo1)) (defun test2 () (user foo2))
Raw
Annotate
Repaste
Edit