今、Parsec, a fast combinator parser を読んでいる。一気に読んでもなかなか分かりづらいのでわかった部分を細切れにして記事にしてみることにした。
まずは、parse 関数の使い方で run という短い関数が紹介されていた。やっていることは、parse 関数に、パーサ関数と入力文字列を渡し、戻ってきた戻り値のモナドからフィールドの値を取り出す作業だ。モナドから値を取り出す方法は、パターンマッチを利用している。この関数に、Parsec を実用的に使う使うときのエッセンスが含まれているような気がする。 import Text.ParserCombinators.Parsec simple :: Parser Char simple = letter run :: Show a => Parser a -> String -> IO () run p input = case (parse p "" input) of Left err -> do putStr "parse error at " print err Right x -> print x 実行例: Main> run simple "abc" 'a' run と同じ動作をする関数は、Parsec モジュールに parseTest というなまえで定義済みなので、プログラムを書かなくてもパーサ関数をテストできる。 Main> parseTest digit "123" '1' コンピュータネタが続くが、Parsec だけはやっておきたい気がする。
by tnomura9
| 2009-09-28 13:17
| Haskell
|
Comments(0)
|
カテゴリ
新型コロナウイルス 主インデックス Haskell 記事リスト 圏論記事リスト 考えるということのリスト 考えるということ ラッセルのパラドックス Haskell Prelude Ocaml ボーカロイド 圏論 jQuery デモ HTML Python ツールボックス XAMPP Ruby ubuntu WordPress 脳の話 話のネタ リンク 幸福論 キリスト教 心の話 メモ 電子カルテ Dojo JavaScript C# NetWalker ed と sed HTML Raspberry Pi C 言語 命題論理 以前の記事
最新のトラックバック
最新のコメント
ファン
記事ランキング
ブログジャンル
画像一覧
|
ファン申請 |
||