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

Haskell-元组列表中的列表理解(a,[a]),haskell,tuples,list-comprehension,Haskell,Tuples,List Comprehension,那么,让我们进入重点: f :: Eq a => a -> [(a,[a])] -> [(a,[a])] f x list = [(a,[m]) | (a,[m]) <- list, x == a] 但是 这是为什么?? 谢谢大家! (我是个新手,如果这个问题太愚蠢,我很抱歉,但我真的找不到解释)那是因为[1,1]与模式不匹配[m]。后者表示一个项目的列表(除非在应该使用类型名称的地方使用)。Haskell已经知道这一对中的第二个元素是列表(通过查看list参数的类型)

那么,让我们进入重点:

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

这是为什么?? 谢谢大家!


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

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

我现在有一个激动人心的时刻!哈哈。确切地说,[m]表示一个元素的列表,现在我知道了。多谢各位=D
   f 1 [(1,[1])] = [(1,[1])]
  f 1 [(1,[1,1])] = []