为什么以下Haskell脚本无法按预期工作?
find :: Eq a => a -> [(a,b)] -> [b]
find k t = [v | (k,v) <- t]
Run Code Online (Sandbox Code Playgroud)
给定find 'b' [('a',1),('b',2),('c',3),('b',4)],解释器返回[1,2,3,4]而不是[2,4].u为了实现这一点,需要引入一个名为的新变量:
find :: Eq a => a -> [(a,b)] -> [b]
find k t = [v | (u,v) <- t, k == u]
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么第一个变体不会产生预期的结果?