2007-02-11から1日間の記事一覧
※ 今しがた、親と付き合って酒をしこたま飲んだので、正しいことかいてるかは(いつも以上に)保証できません。日本語がおかしいかもしれません。 以上(1, 2)を踏まえて考えてみると、以下のような、プリミティブな関数をもう一個追加すれば、とても見通し…
上のエントリーの続き。インタプリタをちょっと改造してみた。 interpret :: Lang -> Lang -> Computer Lang interpret m l = Run $ \p -> let (p', l') = runner (run l) p in (I m p' l', m) 実行結果。 *Main> showComp (P S) $ return S >>= interpret T…
これ、モナドで書いてみた。いや、なんとなく… data Lang = S | T | M deriving (Eq, Show) data Program = P Lang | I Lang Program Lang deriving Show data Computer l = Run { runner :: Program -> (Program, l) } instance Monad Computer where retur…