I understand that syntax-rules
is a hygienic macro system, but I do not understand why this happens:
(define not (lambda (x) x))
(define-syntax nand
(syntax-rules ()
((_ a b)
(not (and a b)))))
(nand #f #t)
==> #f
Now, if I had redefined not
after defining the macro, then (nand #f #t)
returns #t
. Why, if the macro system is supposed to be hygienic?