Hatena::Grouphaskell

eagletmtの日記 このページをアンテナに追加

 | 

2009-09-29

Haskell で Brainf*ck interpreter

22:38 | Haskell で Brainf*ck interpreter - eagletmtの日記 を含むブックマーク はてなブックマーク - Haskell で Brainf*ck interpreter - eagletmtの日記 Haskell で Brainf*ck interpreter - eagletmtの日記 のブックマークコメント

そういえば書いたことなかったなぁということで.

http://github.com/eagletmt/bf-interp

引数が与えられたらそのファイルから,与えられなかったら標準入力から Brainf*ck を読み込んで実行する.

Status 型を作ったり StateT で実行させたりしてるけど,どうしても C とかで書くより煩雑になってしまいますね…

tape が Word8 型なのは 0 のデクリメントの結果を 255,255 のインクリメントの結果を 0 にしたかったから.

なぜそうなってほしかったかというと,まぁ普段使ってる Brainf*ck インタープリタに合わせたかったからです.


Begin や End にジャンプする相対的な距離を入れてあるけど,例えば optimize :: [BFInsn] -> [BFInsn] みたいな最適化する関数を書いたときに扱いがめんどくさいかなぁと思ってる.

トラックバック - http://haskell.g.hatena.ne.jp/eagletmt/20090929
 |