1

我试图通过 Scheme 了解教堂编码的整个原则。我我了解它的基础知识,例如

  • 0 的教堂数字

    (定义 c-0 (lambda (f) (lambda (x) x)))

  • 1 的教堂数字

    (定义 c-1 (lambda (f) (lambda (x) (fx))))

...并继续将函数应用于 x N 次。

现在我的问题是这一切意味着什么?如果我以 Church-3 为例:

(define c-3
  (lambda (x)
    (lambda (f)
      (f (f (f x))))))

这实际上在做什么?我也只有基本的方案知识,但我什至不明白如何使用该功能?使用 c-3 函数的示例输入是什么?它只是像循环一样应用3次吗?

4

1 回答 1

1

你说的对。在这种情况下, c-3 是一个函数,它接受 1 个参数。并返回另一个函数。这个另一个函数接受一个 1 参数函数,并将其应用于第一个参数。

在此示例中,我使用参数 3 调用 c-3,这将返回一个函数。然后,我将这个函数,另一个函数,将 add1 添加到 x。

((c-3 3) (lambda (x) (add1 x)))
6

6如您所见,这将产生。它将 add1 应用于 3、3 次。我知道这很令人困惑。但是您可以手动替换函数主体中的参数以更好地理解它。无论您在哪里看到 f,只需将其替换为(lambda (x) (add1 x))And 替换x3(或任何数字)。

只要参数的类型正确,这将适用于任何 1 参数函数。

于 2014-10-29T17:15:28.857 回答