在Common Lisp(SBCL 1.0.58)中,为什么OR宏使用gensym,而AND不使用呢?
例如:
例如:
CL-USER> (macroexpand '(and 1 2 3 4 5))
(IF 1
(AND 2 3 4 5)
NIL)
T
CL-USER> (macroexpand '(or 1 2 3 4 5))
(LET ((#:G967 1))
(IF #:G967
#:G967
(OR 2 3 4 5)))
T
CL-USER>
我查看了defboot.lisp文件中定义宏的部分,但在注释中没有找到任何相关内容。