Haskell - 列表的立方体总和

Posted

技术标签:

【中文标题】Haskell - 列表的立方体总和【英文标题】:Haskell - sum of cubes of a list 【发布时间】:2015-05-06 18:16:47 【问题描述】:

我必须编写一个函数,对数字列表的立方求和。

这是我目前的代码:

cube' :: (Num a) => a -> a 
cube' x = x*x*x


mySum :: (Num a) => [a] -> a 
mySum [] = []
mySum xs = foldr (\acc x -> acc + cube'(x)) 0 xs

问题是当我运行它时出现以下错误:

没有因使用 'it' 而产生 (Num[t0]) 的实例

在交互式 GHCI 命令的结构中:打印它

【问题讨论】:

您在第一个子句中返回一个列表,您的意思是返回0 吗?此外,foldr 将为您处理一个空列表,这样模式匹配就没有用了。你可以只做mySum xs = foldr ... 而不关心xs 是什么。在这种情况下,您甚至可以完全删除参数并将整个定义设置为 mySum = foldr (\acc x -> acc + cube' x) 0 【参考方案1】:

您绝对是在正确的轨道上。正如 bhelkir 在评论中指出的那样,定义的第一条是错误的和不必要的。另一个问题是 lambda 的参数顺序错误。

【讨论】:

以上是关于Haskell - 列表的立方体总和的主要内容,如果未能解决你的问题,请参考以下文章

python 问题:找到2种不同的方式将数字1729表示为2个立方体的总和

找回原来的 3d 立方体 ...c++

范围内总和计数的 MDX 计算

检查一个数字是不是可以表示为两个立方体的和的高效程序

将 json 中的 json 显示为 2 个并排的立方体,而不是列表

PyOpenGL 如何选择颜色来绘制每个形状?