Wenn ich das tue, zum Beispiel:
%Vor% Es schlägt fehl, weil reify
% (qqq)
anstelle von (toString [this] "Qqq")
sieht.
Die übliche Lösung ist ein Makro, das" Anruf "mit meinem eigenen Ding umschließt, aber es ist länger und aufdringlicher.
Wie mache ich meine Makros stärker als gewöhnliche Makros, die zuerst expandiert werden sollen?
Erwartet etwas wie:
%Vor%oder
%Vor%Es gibt ein Lesemakro, um Dinge zur Lesezeit (vor der Makroexpansionszeit) auszuwerten.
%Vor%Ich habe das nie in "echtem" Code gesehen, und ich denke, die meisten Leute würden es als Hack ansehen, aber es ist da, wenn Sie es brauchen.
Das wird funktionieren:
%Vor% Ich habe ein apply-Makro gefunden. Ich habe es versucht, aber es scheint kaputt zu sein. Das Wichtigste, was ich von apply-macro
gesehen habe, war, dass es das Problem mit eval
genauso gelöst hat wie ich.