2016-08-10 2 views
1

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?

+0

Wenn "etwas" falsch ist, was wäre die Erweiterung? – Sylwester

+0

Es würde keinen geben. Es ist äquivalent zu '(wenn etwas (begin (do-something)))', was absolut gültiger Code ist. –

+0

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

Antwort

Verwandte Themen