为什么我没有成功将参数传递给Haskell中的函数

时间:2014-11-26 05:17:17

标签: haskell

我有以下非常简单的程序,它接受一个整数列表和一个整数。然后,它使用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

1 个答案:

答案 0 :(得分:4)

我知道了。它需要像这样调用:

print $ count (==3) [3, 4, 5, 3, 5, 3]