我遇到的问题是要求编写一个将函数应用于Integer并计算答案的函数。这是问题所在:
声明类型并定义一个函数,它接受一个函数(比如f)和一个整数(比如说n)并返回f 0 + f 1 + f 2 + ... + f n。例如,fun sq 5将返回55,即0 + 1 + 4 + 9 + 16 + 25(“sq”表示“square”)。
有谁知道怎么做?我非常感激。
答案 0 :(得分:4)
这称为高阶函数
fun :: (Int -> Int) -> Int -> Int
fun f n = ???
我们只是像正常函数一样使用f
,编写f 0
或其他什么。 ???是
f 0 + f 1 + ... + f n
至于如何做到这一点,这看起来像是家庭作业,所以我只是暗示你要看看使用[0..n]
获取从0到n
的列表和
map :: (Int -> Int) -> [Int] -> [Int] -- restricting for clarity
将函数应用于列表中的每个项目(嘿,它是另一个更高阶函数)
sum :: [Int] -> Int
将列表中的所有数字相加。