在一个项目中,我需要导入+将clojure.alpha.spec
重命名,如下所示
(ns example.core
(:require [clojure.alpha.spec :as spec]))
然后我尝试定义一个简单的规范如下
(spec/def ::example-spec #(not (neg? %)))
编译时出现了错误,称namespace s
未定义。
我认为这是由于clojure.alpha.spec/def
中的拼写错误。在文件spec-alpha2/src/main/clojure/clojure/alpha/spec.clj
的第456行,有一个背引号s/spec
,但文件的顶部别名是到sa
。这里是第456行
(#{'fn 'fn* `c/fn} op) `(s/spec ~explicated-form)
将行改为
(#{'fn 'fn* `c/fn} op) `(sa/spec ~explicated-form)
我的spec/def
可以成功工作。