Plaster
New
List
Login
text
default
anonymous
2021.07.19 15:52:40
(defmacro with-lazy-values (bindings &body body) (loop for (name form) in bindings for variable = (gensym (string name)) for variable-set-p = (gensym (string name)) collect variable into variables collect variable-set-p into variables collect `(,name (if ,variable-set-p ,variable (setf ,variable-set-p t ,variable ,form))) into macrolets finally (return `(let ,variables (symbol-macrolet ,macrolets ,@body))))) (with-lazy-values ((a (dotimes (x 3 15) (print "HELLO"))) (b (dotimes (x 3 33) (print "bye")))) a)
Raw
Annotate
Repaste
Edit