パターンを探していますが、存在するかどうかはわかりません。
私は xstream を使用していますが、最近この問題に遭遇しました。相互の因果関係/依存関係に基づいてイベントを一致させたい。
E1 (Stream1 内) と E11 (Stream11 内) が E2 (Stream2 内) を引き起こしたとしましょう。その後、E2 によって E3 が発生します (Stream3 内)。E3 が発生したとき、Stream1 のどのイベントが E3 を引き起こしたのか知りたいので、E1 を探しているのですが、どうすればわかりますか?
私は理論上 3 つのアイデアを持っていますが、1 つは実際にはゴミのようです。
- すべてのイベントは、その「親」データをそれ自体にもコピーするため、その場ですべての履歴にアクセスできます。問題は、スケーリング (ループ) がなく、COLD ストリームを思い出させることですが、さらに悪いことです。ネストされたデータ、SPACE ヘビー。
- すべてのイベントは、それを引き起こした「親」への参照を保持しているため、バックトラックできます。フラットデータ、データへのアクセスは主に計算に依存しますが、スペース (無限の歴史?) も対処する必要があります。
- {parents: Event[], child: Event} のような形でイベントへの参照を持つことで、因果関係情報を含む履歴イベントを持つ専用の「履歴」ストリーム (または単純なリスト?) を作成します。後でフィルタリングしてイベントをバックトラックできます。あるいは、この履歴コンテナーは単なるリスト/ストリームではなく、その目的のために最適化されたオブジェクトになる可能性があります。スペース (無限の歴史?) にも対処する必要があります。
どう思いますか?その問題について何か考え/参照がありますか - おそらくFRPの世界で何か? 私にとって、それは一種の「スコーピング」のようなものです。
これは何度も何度も出てきますが、私にはツールの誤用よりもはるかに悪いように見えます。しかし、多分私はそうです。:)