2

我遇到了一个问题,要求编写一个将函数应用于整数并计算答案的函数。这是问题所在:

声明类型并定义一个函数,该函数接受一个函数(比如 f)和一个整数(比如 n)并返回 f 0 + f 1 + f 2 + ... + f n。例如,fun sq 5 将返回 55,即 0+1+4+9+16+25(“sq”表示“正方形”)。

有谁知道这是怎么做到的吗?我将非常感激。

4

1 回答 1

4

这称为高阶函数

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

我们只是f像普通函数一样使用,写作f 0或其他。???是haskell的翻译

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

至于如何做到这一点,这看起来像家庭作业,所以我只是提示你看看使用[0..n]从 0 到n

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

它将一个函数应用于列表中的每个项目(嘿,这是另一个高阶函数)

sum :: [Int] -> Int

它将列表中的所有数字加起来。

于 2013-10-25T20:23:40.350 回答