所以类型foldr
是
foldr :: (a -> b -> b) -> b -> [a] -> b
所以你传递它(:)
所以它的类型变成了
foldr (:) :: [a] -> [a] -> [a]
但是,然后你尝试用它来组合它(*2) [] [1..10]
.这甚至没有很好的打字,所以你有麻烦.我认为你的问题是函数应用程序是所有人的最高优先级.
foldr ((:) . (*2)) [] [1..10]
明确的parens是必要的.
顺便说一下,你可以使用
map (*2) [1..10]