程序:
(define (double fn) (lambda (x) (fn (fn x))))
致电:
(((double (double double)) 1+) 0)
这是否正确:
(double (lambda (x) (double (double x) 1+) 0))
((lambda (x) (double^4 x) 1+) 0)
((double^4 1+) 0)
(16+ 0)
16
同样,在致电时:
(((((double double) double) double) 1+) 0)
这是否正确:
(((double double (double double) double) 1+) 0)
(double (double (lambda (x) (double (double x) 1+) 0)))
(double (lambda (x) (double^4 1+) 0))
((lambda (x) (double^16 x) 1+) 0)
((double^16 1+) 0)
(256+ 0)
256
答案 0 :(得分:2)
我会推荐DrRacket中的步进器。它允许您一次显示一个步骤。它甚至允许你回去。
首先,我选择了语言“HTDP:Advanced with lambda”。 然后我进入了这个程序:
(define (double fn)
(lambda (x) (fn (fn x))))
(((double (double double)) add1) 0)
最后我点击了步进按钮。