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个立方体的总和