我写了下面的代码:从高阶函数
hosum :: (Int->Int)->(Int->Int)
hosum f 0 = 1
hosum f n = afunction f (-abs(n)) (abs(n))
afunction :: (Int->Int)->Int->Int->Int
afunction f a z
|a==z
= 0
|otherwise
= afunction f (a+1) z + afunction f a z
找到F(I)的总和 - | N | to | n | ..我的错误在哪里?
你永远不会调用'f'。尝试删除类型签名并查看您的函数的GHC类型(f参数将完全是多态的)。 – 2015-04-03 00:50:47
作为@jcast说:你只需要一个更多的''否则''情况下,但手动递归是很好的开始我会建议考虑如何用'map'和'sum'来代替 - ** PS * * hosum是什么?我可以在这里删除它 - 也可以尝试找到更好的函数名称,并举例说明如何调用你的函数 - 这里有点奇怪 – Carsten 2015-04-03 05:27:10
@jcast我不明白你在说什么,只是因为我是一个初学者哈斯克尔...这个练习是为我的班级和我的教授告诉我们,使这个函数从以下开始:hosum ::(Int-> Int) - >(Int-> Int)hosum fn。更清楚的事情将是有益的 – 2015-04-03 08:40:48