質問: 複数のウィンドウと単一のデータ構造を反応的なバナナで処理する方法 私はどのように反応性バナナが次のような状況に対処するように設計されているのだろうかと思います: 私は中央のデータ構造を持っているとしましょう。ユーザは、データを表示し、ユーザがそれを変更できるようにする任意の数の異なるタイプのウィンドウを自由に開閉することができる。 だから、この性質を考えると、大きなネットワークを作るのはうまくいくとは思えません。これは、各ウィンドウがネットワークを持ち、何とか接続された場所ですか? このような状況では、誰もが更新を送った1つのチャンネルの裏にデータ構造を置いていました。そして、データ構造は、ウィンドウがすべて "聴いた"という更新(fireイベント)を "公開"します。
回答: 現時点では、外部イベントをコンパイル後にイベントネットワークに追加または削除することはできません(リアクティブバナナバージョン0.4.3以降)。言い換えれば、あなたの仕事を単一のイベントネットワークに記述することは不可能です。ただし、外部イベントまたは複数のイベントネットワークを利用することができ、次のようなソリューションが得られます。 * ウィンドウの動的なコレクションをイベントソースの静的なセット(別名 `AddHandler` )にマップします。 * または、ウィンドウごとに1つのイベントネットワークを使用して、外部イベントソース経由で通信できるようにします。 * 新しいウィンドウが追加または削除されるたびに、単一のイベントネットワークを再コンパイルします。残念ながら、内部状態は失われますので、明示的にして外部で取得する必要があります( `IORef` など)。 (これはおそらく最も満足のいく解決策です)。