フィボナッチ再帰のツリー再帰実装などの関数が与えられた場合、次のような式の評価の各ステップをどのように示すことができ(fib 5)
ますか?
(define (fib n)
(cond ((= n 0) 0)
((= n 1) 1)
(else (+ (fib (- n 1)
(fib (- n 2))))))
たとえば、次のように出力したいと思います。
(fib 5)
(+ (fib 4) (fib 3))
(+ (+ (fib 3) (fib 2)) (+ (fib 2) (fib 1)))
(+ (+ (+ (+ (fib 1) 0) (fib 1) (+ (fib 1) 0)) (+ (+ (fib 1) 0) (fib 1)))
(+ (+ (+ (+ 1 0) 1 (+ 1 0)) (+ (+ 1 0) 1))
準引用符を使用すると、次のように式を部分的に評価できることを知っています。
`(+ ,(* 3 4) (- 0.1 2)) ; evaluates to -┐
(+ 12 (- 0.1 2)) ; <----┘
ただし、これを使用して評価の各ステップを示すことはできませんでした。Peter Norvig のlis.pyのようなスキーム インタープリターを変更できることはわかっていますが、言語自体の中でそれを行う方法が必要です。これどうやってするの?