假设我们有一种不支持数字或布尔值的编程语言: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)
如何测试教会数字并看到一些结果?
答案 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