Pregunta

Entiendo que syntax-rules es un sistema macro higiénico, pero no entiendo por qué sucede esto:

(define not (lambda (x) x))

(define-syntax nand
  (syntax-rules ()
    ((_ a b)
     (not (and a b)))))

(nand #f #t)

==> #f

Ahora, si hubiera redefinido not después definiendo la macro, entonces (nand #f #t) devoluciones #t. ¿Por qué, si se supone que el sistema macro es higiénico?

No hay solución correcta

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top