多重バッククォートとアンクォート

頭が混乱したときのためにメモ。

同等なlistによる表現に書き直す

内側のバッククォートから順に書き直していく。例えば

``(,,n ,,g)

に対するlistによる表現は

`(list ,n ,g)

となる。同様に

`(a ,b `(,,a ,b))

なら

`(a ,b (list ,a b))

である。

評価した結果を求める

右側のアンクォートから評価していく。例えば a=c, b=1 という束縛が存在する環境で

``(,,a ,,b)

を評価すると

`(,c ,1)

になる。また’によるクォートと併用する場合も右から順に考えれば分かりやすい。例えば

`(a ,b `(,',a ,b))

を評価すれば

(a 1 `(c ,b))

を得る(クォートとアンクォートは打ち消し合う)。

Leave a Reply