頭が混乱したときのためにメモ。
同等な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))
を得る(クォートとアンクォートは打ち消し合う)。