比方说,我有以下功能:这些haskell函数的值来自哪里?
sumAll :: [(Int,Int)] -> Int
sumAll xs = foldr (+) 0 (map f xs)
where f (x,y) = x+y
的sumAll [(1,1),(2,2),(3,3)]
结果将是12
。
我不明白的是(x,y)
的值来自哪里。那么,我知道他们来自xs
变量,但我不明白如何。我的意思是,做上面的代码的情况下直接将其中的关键字,这将是这样的:
sumAll xs = foldr (+) 0 (map (\(x,y) -> x+y) xs)
而且我不明白,在上面的代码,请问f
变量和(x,y)
变量代表(\(x,y) -> x+y)
lambda表达式。