さかもとのブログ

つらつらと

clispのwith-gensyms

OnLispのP.149でwith-gensymsを定義しているのだが,clispにはもともとマクロで定義されている.

Similar to its namesake from Paul Graham's book “On Lisp”, this macro is useful for writing other macros:

(with-gensyms ("FOO-" bar baz zot) ...)

expands to

(let ((bar (gensym "FOO-BAR-"))
      (baz (gensym "FOO-BAZ-"))
      (zot (gensym "FOO-ZOT-")))
  ...)
31.11.6. Macro EXT:WITH-GENSYMS
[192]> (macro-print '(with-gensyms ("HOGE-" bar baz) bar))

(LET ((BAR (GENSYM "HOGE-BAR-")) (BAZ (GENSYM "HOGE-BAZ-"))) BAR)