もうちょっと最適化
型宣言を見直してメモリー効率UP。タプルの中にバリアントよりもバリアントの中にタプルの方が良いです。
あと末尾再帰対応……といってもOCamlの式上で末尾再帰させただけの手抜きですがとりあえずwWwでスタックオーバーフローしないようになりました。
yt@THALES /d/Programming/tests/grass $ time grass.byte.exe quine-endo.grass > z1 real 0m1.683s user 0m0.010s sys 0m0.010s yt@THALES /d/Programming/tests/grass $ time grass.opt.exe quine-endo.grass > z1 real 0m0.130s user 0m0.010s sys 0m0.010s yt@THALES /d/Programming/tests/grass $ time grass.byte.exe quine-kik.grass > z1 real 0m1.512s user 0m0.020s sys 0m0.000s yt@THALES /d/Programming/tests/grass $ time grass.opt.exe quine-kik.grass > z1 real 0m0.130s user 0m0.010s sys 0m0.010s
性能の変化としてはバイトコード版でかなり悪化してネイティブ版で微妙に改善してます。私はネイティブ厨なのでOKです。