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

deh*_*ehq 5 haskell tuples list-comprehension

那么,让我们谈谈这一点:

f :: Eq a => a -> [(a,[a])] -> [(a,[a])]
f x list = [(a,[m]) | (a,[m]) <- list, x == a]
Run Code Online (Sandbox Code Playgroud)

所以:

   f 1 [(1,[1])] = [(1,[1])]
Run Code Online (Sandbox Code Playgroud)

但

  f 1 [(1,[1,1])] = []
Run Code Online (Sandbox Code Playgroud)

这是为什么??谢谢!

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

Kar*_*elė 9

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