Clojureマクロは簡単に記述できますが、ラケットの衛生的なマクロほど信頼性が低いと聞きました。私の質問には2つの部分があります。
gensym
衛生マクロとどう違うのですか?- ラケットマクロは、Clojureにはないものを何を提供しますか?(安全性、構成可能性など)
2
衛生的なマクロとは、拡張によって誤って識別子がキャプチャされないことが保証されているマクロです。偶発的な捕獲の一般的な問題は、衛生マクロの導入前のLispコミュニティ内でよく知られていました。マクロの作成者は、固有の識別子(gensymなど)を生成する言語機能を使用するか、問題を回避するために難読化された識別子を使用します。衛生的なマクロは、マクロエクスパンダー自体に統合されているキャプチャの問題に対するプログラムによる解決策です。 en.wikipedia.org/wiki/Hygienic_macro
—
ロバート・ハーヴェイ
[ラケットの]衛生的なマクロシステムはマクロの動作方法に関する深い知識を持っているため、マクロは環境に非常によく統合されています。滑らかな[ラケット] IDE機能。つまり、衛生は、変数キャプチャなどの単純なバグから保護するだけでなく、Common LISPには存在し得ないツールによってコードを正式に分析できるようにします。 randomhacks.net/2002/09/13/hygienic-macros
—
ロバート・ハーヴェイ