手順:
(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!