【发布时间】:2020-12-22 21:33:59
【问题描述】:
我是 Haskell 的新手,所以我不太了解它的大部分错误。我在尝试创建一个使用foldl() 读取列表然后将其乘以2(它会自动反转它)的高阶函数时遇到错误,我使用另一个foldl() 只是为了读取它,所以反转它回到原来的顺序。
如果我得到任何帮助,我将不胜感激。
这是错误
• Couldn't match expected type ‘[Int]’
with actual type ‘t0 Integer -> [Integer]’
• Probable cause: ‘foldl’ is applied to too few arguments
In the first argument of ‘reverses’, namely
‘(foldl (\ acc x -> (2 * x) : acc) [])’
In the expression: reverses (foldl (\ acc x -> (2 * x) : acc) [])
In an equation for ‘multthr’:
multthr = reverses (foldl (\ acc x -> (2 * x) : acc) [])
|
16 | multthr = reverses(foldl(\acc x-> (2*x):acc)[])
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
这里是源代码
reverses::[Int] ->[Int]
reverses = foldl(\acc x-> x:acc)[]
multthr::[Int]->([Int]->[Int])
multthr = reverses(foldl(\acc x-> (2*x):acc)[])
【问题讨论】:
-
能否将代码格式化为代码?选择它并按 Ctrl+k
-
那么考虑一下
Probable cause: ‘foldl’ is applied to too few arguments怎么样?
标签: haskell higher-order-functions fold type-mismatch