我有以下非常简单的程序,它接受一个整数列表和一个整数。然后,它使用map检查整个列表,以查看列表中有多少成员与传递的整数相同。然后它通过查找生成的地图列表的长度来返回这些元素的数量。但是,我无法在我的第一个函数(Integer-Bool)中传递我的第一个整数参数。为什么这样,我该如何解决?感谢
import Data.List (genericLength)
count::(Integer->Bool)->[Integer]->Integer
count op xs = genericLength (filter(True ==) (map op xs))
main = do
print $ count 3 [3, 4, 5, 3, 5, 3]
此代码应如下运行:
- 首先,它将map应用于列表并返回一个新列表:[True,False,False,True,False,True]
- 第二,它应用过滤器来过滤掉所有True,我们得到一个新列表:[True,True,True]
- 第三,它应用genericLength来计算最后一个列表的长度,从而返回:3
答案 0 :(得分:4)
print $ count (==3) [3, 4, 5, 3, 5, 3]