代码之家  ›  专栏  ›  技术社区  ›  Jared

SICP累积函数

  •  3
  • Jared  · 技术社区  · 15 年前

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

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

    有两个例子用这个来计算斐波那契数列, even-fibs list-fib-squares .

    accumulate 在这里。 积累 采用3个参数:

    • 要应用的二进制函数

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

        (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 sequence))

    使用这种方法有什么原因吗 除了与本节中其他类似结构函数的一致性之外?

    1 回复  |  直到 15 年前
        1
  •  5
  •   mqp    15 年前

    我确信 accumulate

    (旁白:请注意,如果 filter 输入 积累 不是列表;例如,如果它表示延迟生成的序列。)