首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于嵌套Vecs的core.typed

用于嵌套Vecs的core.typed
EN

Stack Overflow用户
提问于 2015-04-10 13:21:57
回答 1查看 62关注 0票数 1

我试图为这个数据结构定义一个类型定义:

代码语言:javascript
复制
[[:id :int :null false :pk true :autoinc true]
[:fooname [:varchar 40] :null false]
[:age :int :null false]]

然后,我有一个过滤器函数,它删除每个包含:id的向量,作为第一个元素,如下所示:

代码语言:javascript
复制
(defn filter-id-columns [l]
  (remove #(= :id (first %)) l))

但是,无论我如何尝试,我总是会得到这样一个类型错误:

代码语言:javascript
复制
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#)

我知道我为输入参数提供了错误的类型,但是,我找不到正确的东西。

有什么办法解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-10 19:10:21

函数参数默认为Any。您必须像这样展开本地函数定义:(t/fn [x :- (U nil (Seqable Any))] ...)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29562569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档