【发布时间】:2021-03-01 21:54:33
【问题描述】:
我有这个
(map . map) (\x y -> x + y) [[1,4],[2,5],[3,6]]
我希望的输出是
[5,7,9]
但是,我得到了错误
* No instance for (Show (Integer -> Integer))
arising from a use of `print'
(maybe you haven't applied a function to enough arguments?)
* In a stmt of an interactive GHCi command: print it
不确定如何继续。我意识到我使用map 组合的类型是
(map . map) :: (a -> b) -> [[a]] -> [[b]]
我需要的是(a -> b) -> [[a]] -> [b],但我不确定我在哪里。
【问题讨论】:
-
使用二元操作减少可能长列表的所有元素是
foldr(或foldl',如果您的操作很严格)的域,而不是map。 -
(map) (\[x, y] -> x + y) [[1,4],[2,5],[3,6]]可以。 -
这就是我想要的,虽然我的 lambda calc 还不能掌握它。
标签: list haskell anonymous-function