core.typed 对于嵌套 Vecs
core.typed for nested Vecs
我正在尝试为此数据结构定义类型定义:
[[:id :int :null false :pk true :autoinc true]
[:fooname [:varchar 40] :null false]
[:age :int :null false]]
然后我有一个过滤器函数,它删除每个包含 :id
作为第一个元素的向量,如下所示:
(defn filter-id-columns [l]
(remove #(= :id (first %)) l))
但是,无论我尝试什么,我总是会遇到这样的类型错误:
Type Error (leiningen/code_generator.clj:23:19) Polymorphic function first could not be applied to arguments:
Polymorphic Variables:
x
Domains:
(t/HSequential [x t/Any *])
(t/Option (t/EmptySeqable x))
(t/NonEmptySeqable x)
(t/Option (clojure.lang.Seqable x))
Arguments:
t/Any
Ranges:
x :object {:path [(Nth 0)], :id 0}
nil
x
(t/Option x)
in: (first p1__27917#)
in: (first p1__27917#)
我知道我为输入参数提供了错误的类型,但是,我找不到正确的类型。
关于如何解决这个问题有什么想法吗?
函数参数默认为Any
。您必须像这样扩展本地函数定义:(t/fn [x :- (U nil (Seqable Any))] ...)
.
我正在尝试为此数据结构定义类型定义:
[[:id :int :null false :pk true :autoinc true]
[:fooname [:varchar 40] :null false]
[:age :int :null false]]
然后我有一个过滤器函数,它删除每个包含 :id
作为第一个元素的向量,如下所示:
(defn filter-id-columns [l]
(remove #(= :id (first %)) l))
但是,无论我尝试什么,我总是会遇到这样的类型错误:
Type Error (leiningen/code_generator.clj:23:19) Polymorphic function first could not be applied to arguments:
Polymorphic Variables:
x
Domains:
(t/HSequential [x t/Any *])
(t/Option (t/EmptySeqable x))
(t/NonEmptySeqable x)
(t/Option (clojure.lang.Seqable x))
Arguments:
t/Any
Ranges:
x :object {:path [(Nth 0)], :id 0}
nil
x
(t/Option x)
in: (first p1__27917#)
in: (first p1__27917#)
我知道我为输入参数提供了错误的类型,但是,我找不到正确的类型。
关于如何解决这个问题有什么想法吗?
函数参数默认为Any
。您必须像这样扩展本地函数定义:(t/fn [x :- (U nil (Seqable Any))] ...)
.