かずきのBlog@hatena

日本マイクロソフトに勤めています。このブログは個人ブログなので、ここに書いている内容は個人的な意見で会社の公式見解ではない点にご注意ください。好きなものは XAML と C# 。苦手なものは型の無い言語です。

F#でリアクティブプログラミング

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#だと既に標準で出来るようになってる。関数型言語の強みですね。