問題タブ [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.
scala - Process0 が Process[Id, O] として定義されていない理由
これがProcess0 の定義方法です。
Nothing
実際、型パラメーターをとらないため、これがコンパイルされる理由を理解できません。
効果のないストリームを表すには
コンテキスト型Fを値型自体に設定しないのはなぜですか(ID型コンストラクターを使用して
scalaz.Scalaz.Id
)。
scalaz-stream - シンクでコードのパフォーマンスを向上させる方法は?
scalaz-streams シンクについて奇妙な観察があります。彼らはゆっくりと働いています。それがなぜなのか誰か知っていますか?そして、パフォーマンスを向上させる方法はありますか?
ここに私のコードの関連部分があります: シンクなしのバージョン
これは実行に約7秒かかります
シンク付きバージョン
これは実行に 33 秒かかります。その大きな違いのために、私はここで完全に混乱しています。
scala - scalaz ストリーム io の append メソッドが無限ループを引き起こす
私は scalaz stream website からこのコードを使用します。to メソッドで動作していますが、append を使用しようとすると失敗し、無限ループのように見えて終了しません。append メソッドを使用する理由は、to メソッドを使用してファイルを書き換えたくないからです。
私はそれについて混乱しています、誰かがここで何が起こっているのか説明してもらえますか
よろしくお願いします
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 つのバージョンが存在するのはなぜですか? それらはどのような状況を想定していますか?
scala - 状態遷移の連続したストリームとして書かれたプログラムを scalaz-stream に置き換えるには?
以前は一連の状態遷移として記述していたプログラムを再編成する方法を理解しようとしています。
私はいくつかのビジネスロジックを持っています:
これらを使用して、いくつかの初期 State (空のマップ) を渡し、 stdinから入力を読み取り、それを に変換しIn
、状態遷移を実行し、現在の状態S
と出力Out
をstdoutに出力するプログラムを構築したいと考えています。
以前は、次のようなことをしていました。
しかし、このアプローチ (状態遷移のストリーム) をscalaz-streamに接続する方法を理解するのに本当に苦労しています。私はこれから始めました:
これは次のタイプです: Process[Task, Transition]
。そこからどこへ行けばいいのかわからない。
- my を「渡して」
InitialState
プログラムを実行し、S
各ステップの出力をS
次のステップへの入力としてスレッド化するにはどうすればよいですか? - 各ステップで
S
との値を取得してstdoutに出力するにはどうすればよいですか(文字列に変換できると仮定します)。Out
単一の for-comprehension を使用しようとすると、同様に行き詰まります。
どんな助けでも大歓迎です!
もう少し進んだ。
それで
機能しません: 状態がストリームを介してスレッド化されていないようです。むしろ、各段階で、初期状態が渡されます。
Paul Chiusano は、 のアプローチを使用することを提案しましたprocess1.scan
。だから今私はこれを行います:
ここに問題があります: この特定の例では、私のOut
型はmonoidであるため、初期状態はそのIDを使用して作成できますが、通常はそうではない可能性があります。その場合、私は何をしますか?(使えると思いますOption
が、これは不要のようです。)
scala - scalaz-stream 入力プロセスのマージが stdin で「待機」しているように見える
私は簡単なプログラムを持っています:
ファイルas.txt
には 5 つa
の が含まれており、ファイルbs.txt
には 3 つの が含まれていますb
。次のような出力が表示されます。
ただし、次のように宣言を変更するとin2
:
次に、予期しない動作だと思うものを取得します。ドキュメント1によると、プログラムは、どちらのストリームがより速く供給できるかに応じて、各ストリームから非決定論的にデータをプルする必要があります。これは、一連の s がすぐにコンソールに表示されることを意味しますa
が、これはまったく発生しません。
確かに、 を押すまでENTER
何も起こりません。次の要素を取得するストリームをランダムに選択し、そのストリームがブロックされていた場合、マージされたプロセスもブロックされた場合 (他のストリームにデータが含まれていても)。
何が起こっている?
1 - わかりました。文書はほとんどありませんが、 Dan Spiewakは講演の中で、最初にデータを提供した人は誰でもと非常に明確に述べまし