再帰呼び出し

tico> (tail-rec: (method (x y) (x <= 0 ? y (callee (x - 1) (y + 1)))))
tico> (tail-rec 100000 0)
100000
tico> (tail-rec 500000 0)
java.lang.OutOfMemoryError: Java heap space

まあ、当初の目標である (tail-rec 1000 0) は計算できてるし、
インタプリタ実行という基板上、この程度の再帰能力があれば良しとしようかヽ(´ー`)ノ


ちなみに、100000 の計算に掛かった時間は 11.5 秒。遅すぎ。・゚・(ノД`)・゚・。

追記

っていうか、正確には『再帰』じゃなくて『遅延評価による環境保存』のせいで OutOfMemoryError なんだよなぁ。
内部的には再帰は無いし、末尾呼び出しだから呼び出し元に帰ってくる必要ないし。