在一个项目中,我需要并像这样重命名clojure.alpha.spec
(ns example.core
(:require [clojure.alpha.spec :as spec]))
然后我试图定义一个简单的规范如
(spec/def ::example-spec #(not (neg? %)))
编译时出现“未定义命名空间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
工作成功。