09/11/17 11:52:05
>>741
実はダグホイトのLOL(Let Over Lambda)という本を読んでるんですが、
そこで、flatten関数にback quoteされた式を入れていて、一体どうなってるのか
だんだん分からなくなってしまったところです。
flattenは特別に難しい関数というわけではないので、back quoteの問題なのだと思います。
>>744
詳しい解説ありがとうございます。
私が使ってるlispはsbclなんですが、traceしてみると、途中、よくわからないですが(X '(Y))とかいうのをflattenしているらしく、これだったら(X QUOTE Y)となり、
最後によくわからないSB-IMPL::BACKQ-CONSというアトムをコンスしているようです、、。
試しに
(cons 'SB-IMPL::BACKQ-CONS '(X QUOTE Y))
を計算させると、
`(,X ,@QUOTE)
となります。
LOLの本でdefmacro/g!というマクロはflattenを使っていて、
このマクロにback quoteした式を入れているのですが、
なにかよくわからなくなってしまった、、、。