假设我有以下关键字数组
(def keys [::description ::url ::mailing-list])
我想在两个规格中重用;一种用于定义映射,另一种用于定义函数的可选参数。
(require '[clojure.spec :as spec])
(spec/def ::project-map
(spec/keys :opt-un keys))
(spec/def ::project-args
(spec/keys* :opt-un keys))
那么问题是keys
andkeys*
得到了引用的符号'keys
,而不是它所引用的变量中保存的解析值。
所以我的问题是:是否可以像普通的 lisp#.
阅读器宏一样在读取时解析键的值,或者如果宏获得符号而不是列表文字,是否必须重新定义才能解析符号?