Tôi đang cố gắng viết macro xây dựng phần mềm trung gian tương tự như được sử dụng trong compojure.Macro clojure tạo hàm bậc cao hơn từ hàm
Tôi muốn để có thể gọi:
(def-middleware plus-two [x]
(+ 2 x))
Và có kết quả như sau:
(defn plus-two [f]
(fn [x]
(f (+ 2 x)))
Tôi đã có này xa đọc hướng dẫn trên mạng nhưng nó không làm việc ra cho tôi:
(defmacro def-middleware [fn-name args & body]
'(defn ~fn-name [f]
(fn ~args
(f [email protected]))))
Bất kỳ trợ giúp hoặc con trỏ đến hướng dẫn viết vĩ mô tốt hơn sẽ là tuyệt vời, cảm ơn.
Làm thế nào nó không hoạt động cho bạn? –
CompilerException java.lang.RuntimeException: Đối số đầu tiên để def phải là một Symbol, biên dịch: (NO_SOURCE_PATH: 33) – jdoig
sử dụng back-tick, không phải là dấu ngoặc đơn – Alex