(rontolisp) docs
← マクロ

syntax-quote

`form(~ unquote と ~@ unquote-splicing 付き)

フォームをデータとして組み立てます。名前空間から見える var(自身のものか refer された もの)を指すシンボルはその var の名前空間で限定されるため、展開をどの名前空間で使っても その var を参照できます。special form は素のままですが、それ以外のシンボルは解決でき ないものも含めて oracle と同じく限定されます。核の名前は clojure.core/name と綴り ((:refer-clojure ...) で隠された核の名前は自身の名前空間で綴ります)、その他の未解決 の綴りは定義側の名前空間、エイリアス先頭はその名前空間、クラス先頭は完全限定名で綴り ます。~ はそのフォームの値を埋め込み、~@ は 外側のリスト・ベクター・マップ・セットの中に列を継ぎ足します。各 x# は展開ごとに 1 つの新しい gensym に束縛されます。同じ展開の中では出現箇所によらず同じシンボルに なり、展開が異なれば別物になります。マクロ本体の外ではテンプレートは書かれた位置で 評価されます。syntax-quote の外の unquote、列の外の splice はエラーです。