Haskell - 在元组列表中使用列表推导式 (a,[a])

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

为什么会这样呢?谢谢!
(我是新手,所以如果问题太蠢,请原谅,但我真的找不到解释)
1个回答

9

这是因为[1,1]不符合模式[m]。后者意味着一个项目的列表(除非用于类型名称)。Haskell已经知道对于该对中的第二个元素是一个列表(通过查看list参数的类型),并且不需要明确告诉它。


我刚刚有一个惊人的时刻!哈哈。确切地说,[m] 表示一个元素的列表,现在我明白了。非常感谢!=D - dehq

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接