問題タブ [conduit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
592 参照

haskell - コンジット: 複数のストリーム コンシューマ

コーパス内の NGram の頻度をカウントするプログラムを作成します。トークンのストリームを消費し、1 つのオーダーの NGrams を生成する関数が既にあります。

現時点では、1 つのストリーム コンシューマーをストリーム ソースに接続できます。

複数のストリーム コンシューマーを同じストリーム ソースに接続するにはどうすればよいですか? 私はこのようなものが欲しいです:

プラスは、各コンシューマーを並行して実行することです

編集: Petrのおかげで、この解決策を思いつきました

0 投票する
1 に答える
360 参照

haskell - HTTP コンジットを使用するときに、考えられるすべてのエラーをきれいに処理するにはどうすればよいですか?

次のようなコードがあります。

問題は、HttpException のコンストラクターが他にもたくさんあることです。エラーが正確に何であるかに関係なく、通常は再試行を続けたいと思います。次に置き換えるResponseTimeout_、例外のタイプを推測できないため、コンパイル エラーが発生します。

例外ハンドラにも型シグネチャを提供したくありません。

あまり重複していないことはわかってい_ますが、「例外が ResponseTimeout の場合は x を実行し、例外がそれ以外の場合はまったく同じことを実行する」と言っているようなものなので、ケースを追加するのは間違っていると感じます。ワイルドカードを使用する簡潔な方法はありますが、それがどのタイプであるかをコンパイラに知らせますか?

0 投票する
2 に答える
586 参照

haskell - パイプを使用してストリームのサブセットを折りたたむ 4.0

パイプ 4.0 を理解しようとしていて、いくつかのコンジット コードを変換したいと考えています。s のストリームがありInt、最初の 5 つをスキップして、次の 5 つの合計を取得したいとします。単純なリストを使用すると、次のようになります。

コンジットでは、これは次のようになります。

または完全なプログラムとして:

ただし、パイプでこれを行う方法はよくわかりません。

0 投票する
1 に答える
1023 参照

windows - Windows 8 で「InternalIOException getAddrInfo: 存在しません (エラー 10093)」

なぜこんな単純なコードが動かないのでしょうか?

次のエラーが発生します。

TestConduit.exe: InternalIOException getAddrInfo: 存在しません (エラー 10093)

0 投票する
0 に答える
75 参照

haskell - コンジットを使用した動的ソース

IORef [a]またはの内部など、並列スレッドで常に成長しているリストがありますMVar [a]。スレッドが出るまでも並行して流したい。これをどのように実装すればよいですか?次のようになります。

それとも、リストを成長させずに、スレッド内で生成されたすべてのチャンクを次々とシンクするより良い方法があるでしょうか?

0 投票する
1 に答える
295 参照

haskell - takeWhile のようなコンジットを作成する方法はありますが、最大で特定のバイト数しか使用できません。

takeWhileとの間のクロスのようなコンジットを作成しようとしていisolateます。つまり、述語が保持されなくなるか、バイト制限に達するまで、入力から消費し、出力に譲ります。型シグネチャが

その使用例として:

私はそれを期待しています

ただし、 の最も単純な定義は次のisolateWhileとおりです。

収量

つまり、はを残して破棄し、をisolateすべて使い果たします。このデータ損失は、アプリケーションにとって望ましくありません。ただし、2 番目のケースが期待どおりの結果をもたらすことは注目に値します。HelloHetakeWhilello

=$=そのようなオペランドを交換すると:

それで

これで、最初のテストは修正されましたが、2 番目のテストは壊れました。今回は、takeWhile必要なものは何でもisolate取り、そのサブセットを取ります。しかし、takeWhile使用しisolateないものは破棄され、これは望ましくありません。

最後に、私は試しました:

これは実際に機能します!受け入れるものisolateと受け入れtakeWhileないものはすべて によって消費されCL.consume、 でストリームに戻されますleftover。残念ながら、これは恐ろしいクラッジのように思えlimitますleftover. それは無駄のようです。

私が考えることができる唯一の解決策は、プリミティブの観点からawaitそれyieldを書くleftoverことです。これにより、多くの問題を無駄にすることなくすべての問題が解決されますが、もっと良い方法があるはずです。takeWhileisolate

私は何かを見逃していますか、それともこれを書くより良い方法は本当にありませんか?

0 投票する
1 に答える
1362 参照

exception - aeson / attoparsec を使用したコンジット、ソースにデータがなくなったら例外なくきれいに終了する方法

ファイル/ウェブサーバーからのJSONデータを解析するためにaeson/attoparsecおよびconduit/conduit-http接続を使用しています。conduit-attoparsec私の問題は、パイプラインが常にこの例外をスローすることです...

...ソケットが閉じられるか、EOF に達すると。パイプラインなどを介して結果のデータ構造を解析して渡すことは問題なく機能しますが、常にsinkParserこの例外をスローして終了します。私はこのようにそれを呼び出します...

...ByteStrings をメッセージ構造に解析するコンジットの内部。

データがなくなったら (トップレベルの式がなくなったら)、パイプラインをきれいに終了させるにはどうすればよいですか? エラー文字列を見なくても、この例外を検出/区別する適切な方法はありますか?

ありがとう!

編集: 例:

サンプル入力 (input.json):

出力:

と out.txt: