小编Jar*_*red的帖子

SICP积累功能

计算机程序的结构和解释(SICP)第2.2.3节中,使用以下定义了几个函数:

(accumulate cons nil 
  (filter pred
         (map op sequence)))
Run Code Online (Sandbox Code Playgroud)

两个使用它的例子在斐波那契数列表上运作,even-fibslist-fib-squares.

累积,滤波和映射函数也在2.2节中定义.令我困惑的部分是为什么作者包括在accumulate这里.accumulate需要3个参数:

  • 要应用的二进制函数

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

  • 要应用该功能的列表

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

    (accumulate cons nil (list 1 2 3))
    => (cons 1 (cons 2 (cons 3 nil)))
    => (1 2 3)
Run Code Online (Sandbox Code Playgroud)

由于第三个参数是一个列表,(accumulate cons nil some-list)只会返回some-list,在这种情况下,结果(filter pred (map op sequence))是一个列表.

accumulate除了与该部分中其他类似结构的函数的一致性之外,是否有理由使用此类函数?

scheme sicp

3
推荐指数
1
解决办法
3458
查看次数

标签 统计

scheme ×1

sicp ×1