メモリリーク?

末尾再帰とそうでない関数で、再帰の回数をうんと大きくしたときの実験をしていたときのこと。

(define (succ x)
  (if (= x 0) 1 (+ 1 (succ (- x 1)))))

という関数をGauche*1で定義して、次のように実行

(succ 10000000)

するとメモリ使用量がぐんぐん増えていって、何秒かしたら結果が表示されるんだけど、メモリ使用量が増えたまま減らない。なーぜー。

*1:version 0.8.10 [utf-8,pthreads]