コアの部分は出来てきたので速度比較をしてみた。
named let もまだサポートしていないので
((lambda (a)
(set! a (lambda (i)
(if (= i 2000000)
i
(a (+ i 1)))))
(a 0)
)
'())
こんなコード。
大体 7倍くらい速くなった。
しかしまだまだ全然 Gauche には届かない。
pair だけは特別扱いする例の奴やってみるかな。
あとは tail recursive call の最適化をまじめにやるとか。
このコードに関してはちょっとアンフェアだけど Perl よりも速いんだけど。
まだ速度が足りないな。