15

求人情報の 1 つでこの質問を見て、ラムダ関数とは何か、高次関数との関係を尋ねています。私はすでにラムダ関数の使い方を知っていますが、それを説明する自信がないので、少しグーグルしてこれを見つけました:ラムダ (関数) とは何ですか? そしてこれhttp://en.wikipedia.org/wiki/Higher-order_function

少なくとも1つ以上の関数を取るか、関数を返す必要があるというHOFの定義は、ラムダとは何かに適合するので、私の質問は..ラムダはHOFのタイプですか?

または、彼らの関係をさらに説明できる人はいますか?

4

3 に答える 3

23

少なくとも1つ以上の関数を受け取るか、関数を返す必要があるというHOFの定義は、ラムダが何であるかに適合します

そうですか?(lambda (x) (x+1))(言語の構文に応じて、またはx => x+1または\x -> x+1または) はラムダです。fun x -> x+1ただし、引数として関数を使用することも (int を使用することも)、関数を返すこともありません。

いいえ、ラムダは必ずしも高階関数ではありませんが、そうである可能性があります。

ラムダは無名関数です。そのため、それは関数です。ただし、関数を受け取るか返す場合は高階関数にすぎませんが、ほとんどのラムダにはありません。ただし、ラムダは高次関数の引数として使用されることが最も多いため (つまり、Where(s => s.Length > 5) Where高階関数でs => s.Length > 5あり、(1 次) ラムダである場合)、それらは関連しています。

于 2011-02-15T03:12:04.943 に答える
5

「ラムダ」の意味によって異なります。

リンク先のウィキペディアのページの次の段落は、型理論の観点から関係を明確に説明しています。

「型指定されていないラムダ計算では、すべての関数が高次です。ほとんどの関数型プログラミング言語が派生する型付きラムダ計算では、高階関数は一般に、複数の矢印を含む型を持つ関数です。関数型プログラミングでは、高次の関数です。他の関数を返す順序関数は、カリー化されていると言われています。」

言い換えれば、型理論の用語では、関数 (ラムダ) は、型指定されていないラムダ計算では常に高次であり、型指定されたラムダ計算では高次になる場合があります ... その型シグネチャによって異なります

一部のプログラミング言語で実装されている「ラムダ」構造について話している場合、それは 1) 話している実際の言語と、2) 特定の言語での特定の使用法に依存します。

ラムダが匿名のファーストクラス関数である言語では、高階関数を表現できると期待されます。しかし、高階関数とは、他の関数を引数として取り、/またはそれらを結果として返す関数です。また、アプリケーションでの「ラムダ」のすべての使用がそれを行うわけではありません。

于 2011-02-15T03:20:37.773 に答える
0

ラムダ構文により、高階関数の実装が容易になります。たとえば、カリー化は、ラムダ構文によって簡単になった高階関数です。

高階関数を理解するために、おそらくラムダ演算子を勉強したいと思うでしょう。

于 2011-02-15T03:11:01.900 に答える