我知道这syntax-rules
是一个卫生的宏观系统,但我不明白为什么会这样:
(define not (lambda (x) x))
(define-syntax nand
(syntax-rules ()
((_ a b)
(not (and a b)))))
(nand #f #t)
==> #f
现在,如果我在定义宏not
后重新定义,则(nand #f #t)
返回#t
. 为什么,如果宏观系统应该是卫生的?
我知道这syntax-rules
是一个卫生的宏观系统,但我不明白为什么会这样:
(define not (lambda (x) x))
(define-syntax nand
(syntax-rules ()
((_ a b)
(not (and a b)))))
(nand #f #t)
==> #f
现在,如果我在定义宏not
后重新定义,则(nand #f #t)
返回#t
. 为什么,如果宏观系统应该是卫生的?