F#を試してみた

30分プログラム、その503。OCamlに似てるけど、互換性はそれほどないと評判のF#を触ってみた。
ちょっとしか触っていないけど、内包表記があったり、小粋な演算子(|>とか<|とか)が定義されていたりと、いい言語な気がする。今、学校でC#を使っているけれど、これをF#に置き換えれたら、かなり幸せになれる気がする。
ただ、Windowsでしか動かないから、使うのが結構面倒くさい。一応、MacPortsにも入っているから、あとで試そうと思う。

使い方

VisualStudioに読み込んで、Ctrl-F5で以下のような結果が得られる。

fact(10) = 3628800
fib(5)   = 120

ソースコード

#light

let rec fib n =
    if n = 0 then
        1
    else
        n * fib(n - 1)

let rec fact = function
   0 -> 1
 | n -> n * fact (n-1)

let _ =
    printfn "fact(10) = %d" <| fact 10;
    printfn "fib(5)   = %d" <| fib 5