Huhn-Schema definiert ein (when)
Makro, das (if (begin))
entspricht. Aber wenn ich versuche, das von einem meiner eigenen Makros zu nennen, wirft sie der „Variable“ ist nicht definiert:Wie ruft man das "wann" -Makro in einem Chicken Scheme-Makro auf?
(define-syntax blah
(ir-macro-transformer
(lambda (expr inject compare)
(when something
(do-something)))))
Error: during expansion of (blah ...) - unbound variable: when
Was kann ich import
, um diese Arbeit zu machen?
Wenn "etwas" falsch ist, was wäre die Erweiterung? – Sylwester
Es würde keinen geben. Es ist äquivalent zu '(wenn etwas (begin (do-something)))', was absolut gültiger Code ist. –
Ja, aber denken Sie daran, dass das Ergebnis als Code ausgewertet wird. Das Ergebnis von '(wenn etwas (begin (do-something)))' wenn 'etwas' falsch ist, wäre kein richtiger Code und ein Makro muss Code werden. Ihr Programm wird mit dem kryptischen Fehler stoppen * illegales nicht-atomares Objekt: # * da der zurückgegebene falsche Wert der Wert '# ' –
Sylwester