我有一个在haskell中创建高阶函数的练习,它需要我创建的另一个函数。
multiplyFive :: [Int] -> [Int]
multiplyFive [] = []
multiplyFive (x:xs) = (x * 5) : multiplyFive xs
然后我创建这个函数来添加给定列表中的所有数字
addAll :: ([Int] -> [Int]) -> [Int] -> Int
addAll fn [] = 0
addAll fn (x:xs) = x + addAll fn xs
我正在努力
main :: IO()
main = do
print(addAll multiplyFive [1..4])
输出应该是50,但它给了我10的输出
1条答案
按热度按时间q3qa4bjr1#
你只需要把 *
fn
传递给递归调用,你不用 *fn
把它应用到元素上。因此,addAll
应该是:然而,该函数可以简化为:
multiplyFive
就是: