我不知道该怎么说,但这是问题所在:
(defmacro defbasic [val-fn]
(let [;; Like str but keywords are str'd without :
fn-name (fdat/->string "make-" val-fn)
;; This is a hashmap got from basic-builders
;; which is def
options (get basic-builders val-fn)]
`(defn ~fn-name
([]
(~fn-name {}))
([descriptor]
(->basic-operation ~options descriptor)))))
功能->基本操作有效且已在前面定义。宏的目的是创建通用强制,如:
(defbasic :cat) ;; ==> defn a make-cat function
我看到了Clojure规范的抛出,但是我看不出问题出在哪里。我看到了地图和正确的数据。
我以为也许是问题所在,因为那里有一系列的白名单?
谢谢
答案 0 :(得分:2)
好吧,我终于通过tral-guess-error找到了问题:
(defmacro defbasic [val-fn]
(let [fn-name (symbol (fdat/->string "make-" val-fn))
options (get basic-builders val-fn)]
`(defn ~fn-name
([]
(~fn-name {}))
([descriptor#]
(->basic-operation ~options descriptor#)))))
我忘了两件事:
希望所有这些都可以在一个地方记录下来,许多学习内容没有明确解释这些符号(或者我错过了)。