core.typed - 尝试依赖注释记录

时间:2014-12-11 14:12:40

标签: clojure clojure-core.typed

我正在尝试在clojure.data.xml中注释元素记录,即:

(defrecord Element [tag attrs content])

我注释如下:

(t/ann-record Element [tag :- t/Keyword  attrs :- (t/HMap :complete? false)
                                    content :- (t/Vec Element)])

我有以下功能,不进行类型检查:

(t/ann get-content [Element -> (t/Vec Element)]) (defn get-content [xml] (:content xml))

with'Expected:t / Vec clojure.data.xml.Element Actual:t / Any'

我也尝试用(get xml :content)替换它,但它失败了相同的输出。 我想知道我做错了什么:D

1 个答案:

答案 0 :(得分:0)

您可能需要在Element调用中完全限定ann-record(我假设您的代码实际上不在clojure.data.xml命名空间中)。

docs for ann-record

...
; a record in another namespace
(ann-record another.ns.TheirRecord
              [str :- String,
               vec :- (Vec Number)])
...

所以在这个特殊情况下:

(t/ann-record clojure.data.xml.Element
  [tag :- t/Keyword  
   attrs :- (t/HMap :complete? false) 
   content :- (t/Vec Element)])