続き
ただ、引数に値を蓄積していく方法ではなく、引数関数の拡張テーブルに値を渡していく方法だった。
主眼は末尾再帰ではなくclosure・閉包
にあるからだろう

(define foo
(lambda (l func)
(if (null? l) (func 0)
(foo (cdr l)
(lambda (x)
(func (+ x 1)))))))

> (foo '( a b c d e f g) + )
> 7

とこんな具合の再帰が出ていた。
(テキストではmultiremberEco)