- kazu_yamamoto
- 1718
- 0
- 2
- 0
parsecでもByteStringを読むことはできるけれど、Parser ByteStringみたいなのが欲しかったらattoparsecを使うしかない、という理解でいいのかな。
2013-11-07 12:06:56.@golden_lucky 効率を気にしないなら、Parsec の内部で String を pack して ByteString を返せばいいだけです。
2013-11-07 12:10:37@kazu_yamamoto ありがとうございます。テキストでないデータをパースしたい場合、bytestring+attoparsecなんでしょうか?
2013-11-07 14:30:51.@golden_lucky Parsec は、入力として String、ByteString、Text が取れます。 http://t.co/LGs1xodnLZ
2013-11-07 14:50:07.@golden_lucky 基本的に上位の型が Parsec ByteString になるのはおかしいです。自分で定義したデータ型になるはずです。
2013-11-07 14:51:17.@golden_lucky 自分が定義した型に対して、ByteString から変換するのがパーサー。ByteString へ変換するのがプリティプリンタ(ビルダー)です。
2013-11-07 14:52:22.@golden_lucky ビルダーには BlazeBuilder がよく使われています。最新の ByteString には、自前の Builder も提供されています。
2013-11-07 14:53:14型が豊かでない言語を使うと整数や文字列を乱用してしまいがちです。型が豊かな言語では、まず自分の理想の型を定義することからプログラミングを始めましょう。
2013-11-07 14:55:42@kazu_yamamoto なるほど!あらためて考えると、Parser ByteStringが必要だと思ったのが勘違いでした。Attoparsecは効率を気にする場合にだけ手を出せばいいんですね。
2013-11-07 16:10:14.@golden_lucky Parsec はエラー処理が充実しているが遅い、attoparsec は速いがエラー処理は充実していない。サーバーでのパース処理に組み込むなら attoparsec ですが、一回しかパースしない設定ファイルの処理には Parsec を使います。
2013-11-07 16:14:53