SICP 読み (173) 4.1.6 内部定義
問題 4.21 の a の Fibonacci 数列なソレを以下に。手続きを渡せる、というのは凄いな。てか、これって自前の eval で評価するとどうなるのかな。
(define fibo (lambda (n) ((lambda (fib) (fib fib n)) (lambda (fb k) (cond ((= k 0) 0) ((= k 1) 1) (else (+ (fb fb (- k 1)) (fb fb (- k 2)))))))))
とゆー事で検討。以下を評価。
(eval '((lambda (n) ((lambda (fact) (fact fact n)) (lambda (ft k) (if (= k 1) 1 (* k (ft ft (- k 1))))))) 10) env)
って試験作って色々確認してたんですが、要は
- n が 10 に束縛されるフレームの中で
- fact が (lambda (ft k) (if (= k 1) 1 (* k (ft ft (- k 1))))) に束縛されるフレームができてさらにその中で
- (fact fact n) が eval される
- fact が束縛されている手続きが (以下略
という事になるんでしょうか。微妙に言葉が足りていないかも。