Haskell - 在元组列表中列出理解(a,[a])

时间:2012-12-27 22:17:53

标签: haskell tuples list-comprehension

所以,让我们谈谈:

f :: Eq a => a -> [(a,[a])] -> [(a,[a])]
f x list = [(a,[m]) | (a,[m]) <- list, x == a]

这样:

   f 1 [(1,[1])] = [(1,[1])]

  f 1 [(1,[1,1])] = []

为什么? 谢谢!

(我是新手,所以如果这是一个太愚蠢的问题,我道歉,但我真的找不到解释)

1 个答案:

答案 0 :(得分:9)

那是因为[1,1]与模式[m]不匹配。后者表示一个项目的列表(除非在类型名称应该使用的地方使用)。 Haskell已经知道该对的第二个元素是一个列表(通过查看list参数的类型),并且不需要明确告知它。