2008-09-04 7 views
6

関数への参照をF#の別の関数に渡すことはできますか?F#の関数を渡す

具体的には、私は私の関数に渡された関数を参照する方法を知っておく必要があります -

のfoo(> X ** 3楽しいx)のように具体的に、私はラムダ関数を渡したいのですが自分自身を書きました。

答えて

4

はい、可能です。 manualには、次の例があります。

> List.map (fun x -> x % 2 = 0) [1 .. 5];; 

val it : bool list 
= [false; true; false; true; false] 
2

ファンクションはF#のファーストクラスの市民です。あなたが望むようにそれらを周りに渡すことができます。

あなたはこのような機能を持っている場合: F

let myFunction f = 
    f 1 2 3 

が関数である、その後MyFunctionをの戻り値が1,2及び3

+0

あなたはMyFunctionをへの入力として二つの機能が必要な場合は何? – Nulle

+1

次に、myFunction f1 f2 =としましょう – nickd

2

引き渡しに適用 F ですラムダ関数は次のように動作します。

次のような私たちの自明な関数があるとします。

let functionThatTakesaFunctionAndAList f l = List.map f l 

今、あなたはそれにラムダ関数とリストを渡すことができます。

functionThatTakesaFunctionAndAList (fun x -> x ** 3.0) [1.0;2.0;3.0] 

あなたが最初のパラメータfと呼ばれるので、あなただけのfとしてラムダ関数を参照することができfunctionThatTakesaFunctionAndAList私たち自身の関数の内部。

関数呼び出しの結果はもちろんです:

float list = [1.0; 8.0; 27.0] 
関連する問題