2011-06-01から1ヶ月間の記事一覧

本物のモナドで第8章

教科書の第9章をパラパラと読んだら、第9章はIOモナド。しかも第8章のパーサーを使用するようだ。 てことは、第8章のパーサーを本物のモナドで定義しておかないと、サンプルコードを実行できないと思われる。 仕方なく、教科書のサイトから第8章のパーサーを…

第8章 関数型パーサー #7

演習問題 問題7 累乗を定義。 term' :: Parser Int term' = pow >>- \p -> (symbol "*" >>- \d -> term' >>- \t -> return' (p * t)) +++ (symbol "/" >>- \d -> term' >>- \t -> return' (p `div` t)) +++ return' p pow :: Parser Int pow = factor >>- \f…

第8章 関数型パーサー #6

演習問題 問題6 おれおれbindとreturnで。 expr' :: Parser Int expr' = term' >>- \t -> (symbol "+" >>- \d -> expr' >>- \e -> return' (t + e)) +++ (symbol "-" >>- \d -> expr' >>- \e -> return' (t - e)) +++ return' t term' :: Parser Int term' =…

第8章 関数型パーサー #5

演習問題 問題4 expr | term ______|________ | | | factor * term | _____|___ nat | | | | factor * term 2 | | nat factor | | 3 nat | 4 expr | term ___________|_____ | | | factor * term _______|________ | | | | factor ( expr ) | ____|____ nat …

第8章 関数型パーサー #4

旅行に行ったので間があいてしまった。 数式 相変わらずdo記法を使わずにオレオレbindとオレオレreturnで書いてみる。 expr :: Parser Int expr = term >>- \t -> (symbol "+" >>- \d -> expr >>- \e -> return' (t + e)) +++ return' t term :: Parser Int …