2013-10-25 38 views
2

我遇到了一個問題,要求編寫一個函數將函數應用於Integer並計算答案。這裏是問題:你如何在haskell中的參數中使用函數?

聲明類型並定義一個函數,該函數使用函數(比如f)和整數(比如n)並返回f 0 + f 1 + f 2 + ... + f n。例如,有趣的平方5將返回55,即0 + 1 + 4 + 9 + 16 + 25(「平方」表示「平方」)。

有誰知道該怎麼做?我非常感謝它。

回答

4

這就是所謂的高階函數

fun :: (Int -> Int) -> Int -> Int 
fun f n = ??? 

,我們只是用f像一個正常的功能,那麼寫f 0或什麼的。 ???是的

f 0 + f 1 + ... + f n 

至於如何做到這一點Haskell的翻譯,這看起來像功課所以我就提示你要看看使用[0..n]獲取列表從0到n

map :: (Int -> Int) -> [Int] -> [Int] -- restricting for clarity 

該列表中的應用的功能,每一個項目(嘿它的另一個高階函數)

sum :: [Int] -> Int 

其中在列表中增加了所有的數字。

+0

+1但是不能將這個類型概括爲'Num a =>(Int - > a) - > Int - > a'? (雖然我同意這個作業問題可能期待你的答案) –