私はそれ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
。なぜ、マクロシステムが衛生的であると想定されているのですか?