私はちょうどsharpsignコロンリーダーマクロを読んでいて、gensymと非常によく似た効果があるように聞こえました
Sharpsignコロン:「インターンされていないシンボルを導入します」
Gensym: "インターンされていない新鮮なシンボルを作成して返します"
というわけで簡単なテスト
CL-USER> #:dave
; Evaluation aborted on #<UNBOUND-VARIABLE DAVE {1002FF77D3}>.
CL-USER> (defparameter #:dave 1)
#:DAVE
CL-USER> #:dave
; Evaluation aborted on #<UNBOUND-VARIABLE DAVE {100324B493}>.
それが失敗するように冷却してください。
いよいよマクロテスト
(defmacro test (x)
(let ((blah '#:jim))
`(let ((,blah ,x))
(print ,blah))))
CL-USER> (test 10)
10
10
CL-USER>
甘いので、ゲンシムのような方法で使用できます。
私には、これは明らかに同一の結果で gensym よりもきれいに見えます。重要な詳細が欠けていると確信しているので、私の質問は、それは何ですか?