Ich versuche, ein Makro zu schreiben, das Middleware ähnlich wie in Compojure erstellt.Clojure-Makro, das eine Funktion höherer Ordnung von einer Funktion erstellt
Ich möchte rufen können:
(def-middleware plus-two [x]
(+ 2 x))
Und haben das Ergebnis wie folgt aussehen:
(defn plus-two [f]
(fn [x]
(f (+ 2 x)))
ich diese Online-weit haben Führer aus der Lektüre aber es funktioniert nicht aus für mich:
(defmacro def-middleware [fn-name args & body]
'(defn ~fn-name [f]
(fn ~args
(f [email protected]))))
Jede Hilfe oder ein Zeiger auf eine bessere Macro Writing Guide wäre toll, danke.
Wie funktioniert es nicht für Sie? –
CompilerException java.lang.RuntimeException: Das erste Argument zu def muss ein Symbol sein, kompilieren: (NO_SOURCE_PATH: 33) – jdoig
Verwenden Sie die Back-Tick, nicht das einfache Zitat – Alex