gpt4 book ai didi

scheme - SICP累积功能

转载 作者:行者123 更新时间:2023-12-02 04:02:24 25 4
gpt4 key购买 nike

计算机程序的结构和解释 (SICP) Section 2.2.3使用以下方法定义了几个函数:

(accumulate cons nil 
(filter pred
(map op sequence)))

使用此功能对斐波那契数列表进行操作的两个示例,even-fibslist-fib-squares

accumulate、filter 和 map 函数也在 2.2 节中定义。让我困惑的是为什么作者在这里包含了accumulate。 accumulate 需要 3 个参数:

  • 要应用的二元函数

  • 初始值,用作函数最右边的参数

  • 将应用该函数的列表

使用书中定义将accumulate应用于列表的示例:

    (accumulate cons nil (list 1 2 3))
=> (cons 1 (cons 2 (cons 3 nil)))
=> (1 2 3)

由于第三个参数是一个列表,(accumulate cons nil some-list) 将仅返回 some-list,在本例中为 的结果(filter pred(map op 序列)) 是一个列表。

除了与本节中其他类似结构的函数保持一致之外,使用 accumulate 是否还有其他原因?

最佳答案

我确信 accumulate 的这两种用法只是说明了这样一个事实:“使用元素构建列表”可以被视为一个累积过程,就像“将数字相乘”一样获得乘积”或“将数字相加获得总计”都可以。你是对的,累积实际上是一个空操作。

(旁白:请注意,如果 filter 的输出和 accumulate 的输入不是列表,这显然是一个更有用的操作;例如,如果它表示延迟生成的序列。)

关于scheme - SICP累积功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3672158/

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