我是否对宏观扩张与评估感到困惑?

时间:2017-05-16 23:30:42

标签: common-lisp slime

CLHS说and是一个宏。

所以我对它的实现方式感兴趣并使用slime的slime-macroexpand-all-inplace扩展(and 1 2 nil 4 5),这会产生:

(IF 1
    (IF 2
        (IF NIL
            (IF 4
                (THE T 5)
                NIL)
            NIL)
        NIL)
    NIL)

我不明白的是,and一旦遇到nil值就会停止评估。但此处and正在超越...(IF NIL...

我是否将宏观扩张与评估混为一谈?

我还尝试跟踪(and 1 2 nil 4 5)C-c C-t的评估,但是粘液(或sbcl)抱怨:can't use encapsulation to trace anonymous function #<FUNCTION (MACRO-FUNCTIONAND) {2264360D}>

0 个答案:

没有答案