関数への参照をF#の別の関数に渡すことは可能ですか? 具体的には、次のようなラムダ関数を渡したい
foo(楽しい x -> x ** 3)
より具体的には、自分で作成した関数で渡された関数をどのように参照するかを知る必要があります。
関数への参照をF#の別の関数に渡すことは可能ですか? 具体的には、次のようなラムダ関数を渡したい
foo(楽しい x -> x ** 3)
より具体的には、自分で作成した関数で渡された関数をどのように参照するかを知る必要があります。
はい、可能です。マニュアルには次の例があります。
> List.map (fun x -> x % 2 = 0) [1 .. 5];;
val it : bool list
= [false; true; false; true; false]
関数はF#の第一級市民です。したがって、あなたはあなたが望むようにそれらを回すことができます。
このような関数がある場合:
let myFunction f =
f 1 2 3
fが関数の場合、myFunctionの戻り値はfが1、2、および3に適用されます。
ラムダ関数を別の関数に渡すと、次のように機能します。
次のような自明な関数があるとします。
let functionThatTakesaFunctionAndAList f l = List.map f l
これでラムダ関数とリストを渡すことができます:
functionThatTakesaFunctionAndAList (fun x -> x ** 3.0) [1.0;2.0;3.0]
独自の関数内では、最初のパラメーターを呼び出したのでfunctionThatTakesaFunctionAndAList
、ラムダ関数を as として参照できます。f
f
もちろん、関数呼び出しの結果は次のとおりです。
float list = [1.0; 8.0; 27.0]