>>213-215

レスありがとうございます。>>212があまりにも言葉足らずだったので追加。

前提としては当然のことながら元のソースは
副作用を含まない関数プログラミング的な書き方をしているとします。

ttp://d.hatena.ne.jp/SaitoAtsushi/20050902/p1
を参考に、たとえば

(define (fib x)
(if (<= x 1)
1
(+ (fib (- x 1)) (fib (- x 2)))))
を
(define (fib-maker f)
(lambda(x)
(if (<= x 1)
1
(+ (f (- x 1)) (f (- x 2)) ))))

(define fib (fix fib-maker))

に置換するという操作を全ての関数定義について行いたいのです。

汎用性を持たせるため、R5RSやCommonLispの基本的な範囲で
実装できれば好もしいですが、不可能なようならR6RSやリーダーマクロも
検討したいと思います。