gpt4 book ai didi

Lisp:如何编写高阶函数

转载 作者:太空宇宙 更新时间:2023-11-03 18:43:03 26 4
gpt4 key购买 nike

我有这个问题要解决:

可以进一步推广求和高阶过程,以捕捉将项与固定运算符组合的想法。数学乘积运算符是这种思想的一个具体例子,用乘法代替求和运算符的加法。下面开始的过程 accumulate 旨在捕捉这个想法。 combiner 参数表示用于减少项的运算符,base 参数表示当没有要组合的项时返回的值。例如,如果我们已经实现了 accumulate 过程,那么我们可以将 sum 过程定义为:

(定义总和(累加 + 0))

完成 accumulate 的定义,使其行为符合此描述。

          (define accumulate
(lambda (combiner base)
(lambda (term start next stop)
(if (> start stop)
...
...))))

我在最后两行插入:

   base
(combiner base (accumulate (combiner start stop) start next stop))

但是,我不知道这是否正确,也不知道如何实际使用 sum 过程来调用 accumulate,从而对数字求和。

最佳答案

This是学习如何钓鱼的好方法。好多了比给鱼还好。

到此为止,下面是解决问题的方法。写一个将执行 (accumulate + 0) 将执行的操作的函数。不要使用accumulate函数;只需写一个 defun 即可完成您的作业要求。接下来,编写一个函数来执行 (accumulate * 1) 将执行的操作。这两个函数有什么相同点,有什么不同点。在大多数情况下,除了出现 + 和 * 运算符外,它们应该是相同的。

接下来,请注意 accumulate 函数将返回一个函数,该函数看起来很像您之前编写的两个函数。现在,利用您编写的两个函数非常相似的洞察力,思考如何将其应用于 (defun accumulate ...) 返回的函数。

关于Lisp:如何编写高阶函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1570265/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com