moonmile solutions 分室

ソフトウェア開発者の情報収集をリアルタイムで垂れ流し...という具合に行きます。

F#でラムダ式を配列に入れる離れ業がある

pars.fs を解析しているときに気づいたのだが、

let funcs = [|
    (fun x -> x + 2);
    (fun x -> x * 2);
    (fun x -> x / 2)
    |]

ってことができる。ラムダ式を配列にするのだけど、こういうことができる。

> funcs.[1] 10 ;;
val it : int = 20

あらかじめ、引数が1つのint型のラムダ式を入れる、ってのを推測してくれるから、

let funcs = [|
    (fun x -> x + 2);
    (fun x -> x * 2);
    (fun x -> x / 2);
    (fun x y -> x + y )
    |]

は、fun x y のところでコンパイルエラーになる。

これって C# で書くとどうなるんだろうか?