程序:
(define (double fn) (lambda (x) (fn (fn x))))
为什么不能使用 Scheme 解释器计算以下内容:
((((((double double) double) double) double) 1+) 0)
程序:
(define (double fn) (lambda (x) (fn (fn x))))
为什么不能使用 Scheme 解释器计算以下内容:
((((((double double) double) double) double) 1+) 0)
当然可以计算,只是每次double
调用的计算次数都呈指数增长……如果您等待非常非常长的时间,您最终会得到答案(多长时间?几个小时之间的任何事情或几个世纪)。
(((double double) 1+) 0)
=> 4
((((double double) double) 1+) 0)
=> 16
(((((double double) double) double) 1+) 0)
=> 65536
((((((double double) double) double) double) 1+) 0)
=> ... ; takes too long to compute!