Я понимаю, что 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
. Почему, если система макросов должна быть гигиенической?