SICP(例2.6)では、次の関数は「数字なしで通り抜ける」方法として説明されています。私はこれを理解しようとひっかきます。出発点として、これらの関数はどのように呼び出されますか?出力が1になるような方法で実際に適用できますか?(または他の番号?)
(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
>