4

セクションでは、FRP ストリーム処理におけるマージ操作について説明します ( Sodium ライブラリが使用されます)。Book は、ストリームの組み合わせを示す以下の図を示しており、イベントがストリームを介して FRP ロジックに入ると、トランザクション コンテキストで発生する状態変化のカスケードが発生するため、すべての変更はアトミックであると述べています。

イベントのストリーム - sDeselectsSelect(「+」と「-」の 2 つのイベントを参照) は UI コントロールから発生しています。これは、同じ FRP トランザクション内で発生するため、実行されるイベントは同時と見なされます。それから本は言います

マージの実装では、それ以上入力を受信しないことがわかるまで、イベントを一時ストレージに格納 する必要があります。次に、イベントを出力します。複数のイベントを受け取った場合は、指定された関数を使用してそれらを結合します。それ以外の場合は、受信した 1 つのイベントを出力します。

質問:「これ以上インプットが来ない」時はいつですか?マージ関数はこの瞬間をどのように認識していますか? 特定のダイアグラムの 2 番目の着信ストリームから値を取得するのは単に時間ですか、それとも不足していますか? より良いストリームの例で説明できますか?

4

1 に答える 1

3

Sodium がこれを行う方法は、B が A に依存している場合、B のランクが A よりも高くなるように、メモリに保持されている FRP ロジックの有向グラフの構造にランク番号を割り当てることです。(サイクルは、これらのランクを割り当てるグラフ トラバーサルで中断されます。) 次に、これらの数値は優先度キューで優先度として使用され、低いランク値が最初に処理されます。

イベント処理中に、優先度キューにマージのランクよりも低いランクが含まれていない場合、マージの入力データがこれ以上ないことがわかり、値が出力されます。

于 2016-08-13T20:15:21.843 に答える