5

所以,让我们进入正题:

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])] = []

这是为什么??谢谢!

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

4

1 回答 1

9

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

于 2012-12-27T22:23:08.333 回答