【发布时间】:2017-05-12 03:58:08
【问题描述】:
我刚开始学习 Haskell,我有任务使用高阶函数来创建具有以下类型定义的函数
-- compr :: (a->b) -> (a -> Bool) -> [a] -> [b]
函数不相关,可以是最简单的函数所以我的想法是这样的:
identity x = x
booleans x | x == 1 = True
| x ==0 = False
| otherwise = False
compr identity booleans xs = filter booleans(map (identity) xs)
但是这个函数有这种类型
compr :: (a->b) -> (b -> Bool) -> [a] -> [b]
我已经尝试了所有方法,但没有任何积极的结果。我希望你能帮助我。
【问题讨论】:
-
提示:您需要编写一个函数,该函数采用“转换”函数
(a -> b)、“谓词”(a -> Bool)、as 的列表,仅将“转换”应用于谓词成立的[a]的成员,并返回结果bs 的列表。你必须先申请filter,然后再申请map。 -
我希望您的函数实际上具有
comp :: (a -> a) -> (int -> bool) -> [a] -> [a]的类型。标识函数必须返回与给定相同的类型。你需要一个修改它的参数的函数。 -
非常感谢我在正确的轨道上,我先应用地图然后过滤
标签: haskell