問題タブ [scalaz-stream]

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 に答える
126 参照

scala - Process0 が Process[Id, O] として定義されていない理由

これがProcess0 の定義方法です。

Nothing実際、型パラメーターをとらないため、これがコンパイルされる理由を理解できません。

効果のないストリームを表すには

コンテキスト型Fを値型自体に設定しないのはなぜですか(ID型コンストラクターを使用してscalaz.Scalaz.Id)。

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

scalaz-stream - シンクでコードのパフォーマンスを向上させる方法は?

scalaz-streams シンクについて奇妙な観察があります。彼らはゆっくりと働いています。それがなぜなのか誰か知っていますか?そして、パフォーマンスを向上させる方法はありますか?

ここに私のコードの関連部分があります: シンクなしのバージョン

これは実行に約7秒かかります

シンク付きバージョン

これは実行に 33 秒かかります。その大きな違いのために、私はここで完全に混乱しています。

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

scala - scalaz ストリーム io の append メソッドが無限ループを引き起こす

私は scalaz stream website からこのコードを使用します。to メソッドで動作していますが、append を使用しようとすると失敗し、無限ループのように見えて終了しません。append メソッドを使用する理由は、to メソッドを使用してファイルを書き換えたくないからです。

私はそれについて混乱しています、誰かがここで何が起こっているのか説明してもらえますか

よろしくお願いします

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

scala - scalaz-stream に network io の実装が 2 つあるのはなぜですか?

とにscalaz.stream.tcpありscalaz.stream.nioます。

  • tcpバージョンはとしConnectionて扱いますProcess[Task, A]
  • nioバージョンはとしConnectionて扱いますProcess[Task, Exchange[I, W]]

これらの 2 つのバージョンが存在するのはなぜですか? それらはどのような状況を想定していますか?

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

scala - 状態遷移の連続したストリームとして書かれたプログラムを scalaz-stream に置き換えるには?

以前は一連の状態遷移として記述していたプログラムを再編成する方法を理解しようとしています。

私はいくつかのビジネスロジックを持っています:

これらを使用して、いくつかの初期 State (空のマップ) を渡し、 stdinから入力を読み取り、それを に変換しIn、状態遷移を実行し、現在の状態Sと出力Outstdoutに出力するプログラムを構築したいと考えています。


以前は、次のようなことをしていました。


しかし、このアプローチ (状態遷移のストリーム) をscalaz-streamに接続する方法を理解するのに本当に苦労しています。私はこれから始めました:

これは次のタイプです: Process[Task, Transition]。そこからどこへ行けばいいのかわからない。

  1. my を「渡して」InitialStateプログラムを実行し、S各ステップの出力をS次のステップへの入力としてスレッド化するにはどうすればよいですか?
  2. 各ステップでSとの値を取得してstdoutに出力するにはどうすればよいですか(文字列に変換できると仮定します)。Out

単一の for-comprehension を使用しようとすると、同様に行き詰まります。

どんな助けでも大歓迎です!


もう少し進んだ。

それで

機能しません: 状態がストリームを介してスレッド化されていないようです。むしろ、各段階で、初期状態が渡されます。


Paul Chiusano は、 のアプローチを使用することを提案しましたprocess1.scan。だから今私はこれを行います:

ここに問題があります: この特定の例では、私のOut型はmonoidであるため、初期状態はそのIDを使用して作成できますが、通常はそうではない可能性があります。その場合、私は何をしますか?(使えると思いますOptionが、これは不要のようです。)

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

scala - scalaz-stream 入力プロセスのマージが stdin で「待機」しているように見える

私は簡単なプログラムを持っています:

ファイルas.txtには 5 つaの が含まれており、ファイルbs.txtには 3 つの が含まれていますb。次のような出力が表示されます。

ただし、次のように宣言を変更するとin2:

次に、予期しない動作だと思うものを取得します。ドキュメント1によると、プログラムは、どちらのストリームがより速く供給できるかに応じて、各ストリームから非決定論的にデータをプルする必要があります。これは、一連の s がすぐにコンソールに表示されることを意味しますaが、これはまったく発生しません。

確かに、 を押すまでENTER何も起こりません。次の要素を取得するストリームをランダムに選択し、そのストリームがブロックされていた場合、マージされたプロセスもブロックされた場合 (他のストリームにデータが含まれていても)。

何が起こっている?

1 - わかりました。文書はほとんどありませんが、 Dan Spiewakは講演の中で、最初にデータを提供した人は誰でもと非常に明確に述べまし