Haskellチューリングマシン

Haskellでチューリングマシン(4) 命令の実行処理を作成

前回、テープの走査をモナドに包む時に、テープの値と一緒に、「ヘッドのステータス」を状態として保持できるようにしました。 この値は単なるInt型として実装したのですが、明確なアイデンティティを与えるため、HeadStateという別名を付けました。 --ヘッ…

Haskellでチューリングマシン(3) モナドを使ってどうするか

チューリングマシンを作るに当たって、テープを操作する処理をモナドにするというのを試みたわけですが、もとよりモナドの使い方がよく解っていないため改めて見返すとなかなか酷い出来です。結局、自分でもしっくり収まっていなかったのでしばらく停滞して…

Haskellでチューリングマシン(2) テープの処理をモナドに

前回のエントリのテープに対する処理を、モナドに包んだだけです。 module Machine(TapeValue(..)) where --テープの値は 0 または 1 data TapeValue = T0 | T1 deriving Eq instance Show TapeValue where show T0 = "0" show T1 = "1" --無限長の長さを持…

Haskellでチューリングマシン(1) 無限の長さのテープを作る

そろそろ簡単なテストコードを書き連ねるより、それなりの規模のものを一つ作ってみるのが良いと思ったので、タイトルの通り、チューリングマシンのエミュレーターを作ってみる事にしました。Haskellもまだそんなに使いこなせてないうえに、チューリングマシ…