首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不是的。与P相关的过滤器

不是的。与P相关的过滤器
EN

Stack Overflow用户
提问于 2013-09-27 22:26:25
回答 2查看 216关注 0票数 1

大家好,我是Haskell的新手,还在学习,为什么这不起作用呢?

代码语言:javascript
复制
filterFirst :: (a -> Bool) -> [a] -> [a]
filterFirst p xs = delete (not . p) (filter (not . p)  xs)

代码语言:javascript
复制
ERROR "FirstLiterate.lhs":58 - Type error in application
*** Expression     : delete (not . p) (filter (not . p) xs)
*** Term           : not . p
*** Type           : a -> Bool
*** Does not match : a
*** Because        : unification would give infinite type

我怎样才能改变这一点,这样我就不需要改变(一个-> Bool)了?

EN

回答 2

Stack Overflow用户

发布于 2013-09-27 22:28:36

delete的第一个参数应该是列表的元素(在本例中是a类型的值),而不是a -> Bool类型的函数。

您得到的类型错误告诉您not . p具有类型a -> Bool,但是delete函数需要一个a类型的值。

票数 6
EN

Stack Overflow用户

发布于 2013-09-27 22:56:14

您可以使用deleteBy :: (a -> a -> Bool) -> a -> [a] -> [a]

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

https://stackoverflow.com/questions/19053251

复制
相关文章

相似问题

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