在SICP(例如2.6)中,下面的函數被描述爲'無法取數字'的方式。我在試圖理解這一點。作爲一個起點,這些函數是如何被調用的?我可以在輸出爲1的某種方式實際應用它們嗎? (或任何其他數字?)我如何從SICP調用方案編號功能
(define zero (lambda (f) (lambda (x) x)))
(define (add-1 n)
(lambda (f) (lambda (x) (f ((n f) x)))))
我最初的嘗試都沒有成功:
Welcome to DrScheme, version 4.1.5 [3m].
Language: Simply Scheme; memory limit: 128 megabytes.
> (add-1 (zero))
. . procedure zero: expects 1 argument, given 0
> (add-1 zero)
#<procedure>
> (add-1 1)
#<procedure>
> ((add-1 1))
. . #<procedure>: expects 1 argument, given 0
>
你可能wan't看http://en.wikipedia.org/wiki/Lambda_calculus#Arithmetic_in_lambda_calculus – 2009-05-05 21:08:02