Factorでfactorialとfibonacci

: factor dup 1 = [ ] [ dup 1- factor * ] if ;

: fib dup 2 <= [ drop 1 ] [ dup 1 - fib swap 2 - fib + ] if ;

stackに特別な値なんぞつまなくても、再帰はちゃんと一番最初の呼び出し元でreturnすれば終わる(<-当たり前だけど)なので自然とかける。
頭の中では、この関数を実行したら(上手く動くと仮定して)、stackがどういう状況になるかを考えれば良いわけで。


でもまだまだstack-basedな恩恵に授かれていない気がするんだよなぁ。うーん。