私は現在F#3.0のプログラミングを読んでおり、F#が部分関数アプリケーションをサポートしていることを読んでいます。List.mapを使った部分関数アプリケーション
しかし、私は
List.map (+1) [1 .. 10];;
をしようそれから私はerror FS0001: This expression was expected to have type 'a -> 'b
を得るが、List.map (fun x -> x + 1) [1 .. 10];;
は罰金コンパイルします。なぜどんなアイデア?あなたは+
の周りに括弧を配置する必要があり
はい、私が 'add x'や'(+)1'を書くと左辺になることは明らかです。しかし、本当に '+ 1'を表現したいのであれば、ラムダを使う必要がありますか? 'fun x - > x + 1'のように? –
@MaikKlein、関数を渡す必要がありますが、 '+ 1'は関数式ではありません。 '(+)1'はです。ラムダは、特に非対称の演算子のために、最も読みやすい構文を持っていることが多くあります。 '(/)2'と書くと' fun x - > 2/x'となり混乱します。ただし、ポイントフリーのスタイルで書くことは可能です。 'fun x - > x/2'は'(/)>>(|>)2'と等価です。 [この回答](http://stackoverflow.com/a/11383421/974789)を参照してください。 – bytebuster
@MaikKlein基本的な問題は、 '+ 1 = fun x - > x + 1'から' + 1 = 1'をどのように区別するかということです。 F#ソリューションは、関数ではなく数字を書くことを常に試みているということです。 –