Question

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?

No correct solution

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top