我寫了下面的代碼:從高階函數
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