attoparsecパーサーConduit
を使用してを作成しようとしています。具体的には、を与えられて、パーサーを入力に繰り返し適用し、結果をストリーミングするを構築したいと思います。parseOne :: Parser T
Conduit ByteString m T
attoparsec-conduitは、をに変換sinkParser
することを提案しますが、どうすればこれをに変換できますか?私が探しているのは、次のような関数です。Parser
Sink
Sink
Conduit
conduitSink :: (Resource m) => Sink a m b -> Conduit a m b
これは、データをに繰り返しフィードしSink
、各結果を生成します。手動ループとしてはかなり簡単に書けるようですが、もっと良い方法があるのではないかと思います。
コンジットライブラリにこの一見明らかな機能がないため、私は何か間違ったことをしているのではないかと思います。これを達成するためのより良い方法はありますか?ユースケースは、生のバイトをメッセージベースのネットワークプロトコルの解析された形式に変換し、パイプラインの後の段階で処理することです。blaze-builder-conduitのConduit T m ByteString
おかげで、私はすでに反対の方向(つまり)を持っているので、これは物事を構造化する最も自然な方法のように思えました。