如何测试lambda函数?

时间:2016-01-03 12:50:59

标签: lambda scheme

假设我们有一种不支持数字或布尔值的编程语言:lambda是它提供的唯一值。

教会数字使用lambdas来创建数字表示。这个想法与自然数的功能表示密切相关,即有一个代表“零”的自然数和一个返回它给出的自然数的后继的函数“succ”。

word = "test"

def createBlank(word):
    blanks = '_' * len(word)
    print(blanks)

如果我有另一个(define zero (lambda (f) (lambda (x) x))) (define (add-1 n) (lambda (f) (lambda (x) (f ((n f) x)))))

lambda

我可以测试它:(define pluss4 (lambda(x) (+ x 4)) ,我看到答案是(pluss4 0)

如何测试教会数字并看到一些结果?

1 个答案:

答案 0 :(得分:0)

要将教会号码转换为整数,您只需将其应用于此:

(define (add1 n) (+ n 1))         ; In SICP it's called 1+
((zero add1) 0)                   ; ==> 0
(((add-1 (add-1 zero)) add1) 0)   ; ==> 2

你可以把它变成一个程序:

(define (church->int x)
  ((x add1) 0))

(church->int zero)                  ; ==> 0
(church->int (add-1 (add-1 zero)))  ; ==> 2