F#のIEventインターフェースを見てみたらIObservable実装してることに気づきました。そして、Observableモジュールというものも定義されている・・・。
これは出来る!!!ということで、ちょろっと試してみました。
// int型を発行するIEventを作る let e = Event<int>() let event = e.Publish // 偶数のみ出力するようにフィルタリング event |> Observable.filter (fun i -> i % 2 = 0) |> Observable.subscribe (printfn "%d") |> ignore // 1〜10までTrigger(発行)してみる [1..10] |> Seq.iter e.Trigger
実行すると、偶数のみフィルタリングして表示されるってあんばいです。
// 実行結果 2 4 6 8 10
いいですねいいですね!C#とかでReactive Extensionsを別途入れてやってたようなことがF#だと既に標準で出来るようになってる。関数型言語の強みですね。