fink/macro-utils.lisp

13 lines
471 B
Common Lisp
Raw Normal View History

2008-05-21 20:46:32 +02:00
(in-package macro-utils)
(defmacro with-gensyms ((&rest names) &body body)
`(let ,(loop for n in names collect `(,n (gensym)))
,@body))
2008-05-21 21:18:47 +02:00
(defmacro once-only ((&rest names) &body body)
2008-05-21 20:46:32 +02:00
(let ((gensyms (loop for n in names collect (gensym))))
`(let (,@(loop for g in gensyms collect `(,g (gensym))))
`(let (,,@(loop for g in gensyms for n in names collect ``(,,g ,,n)))
,(let (,@(loop for n in names for g in gensyms collect `(,n ,g)))
,@body)))))