F#

関数型言語の勉強をしようかとF#をインストールしてみました。インストールしたら自動的に Visual Studio からプロジェクトを作成できるようになるようです。

とりあえずこんにちは世界から。.NET Frameworkを使用できるので、フォームにボタンを置いて、ボタンを押したらメッセージボックスに「Hello World!」と表示させてみます。

open System
open System.Windows.Forms

let form = new Form()

let btn = new Button()
do form.Controls.Add(btn)
do btn.Text <- "Click"
do btn.Click.Add(fun arg -> MessageBox.Show("Hello World!") |> ignore)

do Application.Run(form)

btn.Clickがイベントハンドラで、そこに匿名関数を渡しています。 |> ignore は MessageBox.Show の戻り値を無視するためのもの。これをやらないと関数の戻り値に DialogResult があるものとみなされてしまい、 EventHandler と型が違うと怒られてしまいます。

あとは関数作ったりカリー化したり。

let add x y = x + y
do printfn "%d" (add 1 2)

let add2 = add 2
do printfn "%d" (add2 5)

なかなか面白いです。現実逃避にもってこいですね(仕事するより疲れるけど……)。

はてなダイアリーでは色分けできないのかな? キーワード間違えているかも。C#がcsだからF#はfsかと思ったけど違うのかな。