比方說,我有以下功能:這些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表達式。