Lazy K インタプリタを作ってみた

あなごるの sort characters を挿入ソートで書いたらタイムアウトになって悲しかったので、速度重視で作ってみました。

公式のインタプリタ:

lazy sort+characters.lazy < input2  1.60s user 0.00s system 93% cpu 1.715 total

作ったやつ:

./lazyk sort+characters.lazy < input2  0.26s user 0.00s system 98% cpu 0.265 total

公式のはノードのメモリ管理が参照カウント方式だったんですが、生成と破棄が激しいっぽかったので copying GC にしてみました。
あとは評価器をスタックを使う方式にしたとか色々。

この手の lazy な言語の評価器の実装については、"The Implementation of Functional Programming Languages" という本(オンラインで読める)が参考になります。

追記

さっそくあなごるのインタプリタを差し替えていただきました。shinhさんありがとうございます!