誰かがラムダが何であるかについての良い説明を提供できますか?私たちはそれらにタグを付けており、それらはC#の質問の秘密にあります。
誰かがラムダが何であるかについての良い説明を提供できますか?私たちはそれらにタグを付けており、それらはC#の質問の秘密にあります。
回答:
クロージャー、ラムダ、無名関数は必ずしも同じではありません。
匿名関数とは、独自の名前を持たない(または少なくとも必要とする)関数です。
クロージャーは、宣言されたときにレキシカルスコープ内にあった変数にアクセスできる関数であり、スコープから外れた後でもアクセスできます。匿名関数は必ずしもクロージャーである必要はありませんが、ほとんどの言語では無名関数であり、そうでない場合はあまり役に立ちません。
ラムダは、コンピュータサイエンスに関しては、それほど明確には定義されていません。多くの言語ではこの用語を使用していません。代わりに、それらをクロージャーまたはアノン関数と呼ぶか、独自の用語を発明します。LISPでは、ラムダは単なる無名関数です。Pythonでは、ラムダは、単一の式に限定された無名関数です。それ以上のもので、名前付き関数が必要です。ラムダは両方の言語でクロージャです。
「ラムダ」とは、ラムダ計算または特定のラムダ式を指します。ラムダ計算は基本的に、関数を扱う論理と数学の分岐であり、関数型プログラミング言語の基礎です。
〜ウィリアム・ライリーランド
以前の回答への応答:
-無名関数についての重要なことは、名前を必要としないことではありません。
-閉鎖は別の概念です。
-巨大なウィキペディアの記事はこれを明確にしていない。
これが3つの部分での私の答えです
。1.ラムダは、式でもある関数です。これは重要なことです。
2.いわゆる「ラムダ」を実装する多くの言語は、これらの短い関数をより簡単かつ高速に作成するために、いくつかの構文糖を追加しますが、これは必須ではありません。
3.一部の言語では、ラムダに副作用がないことを要求する場合があります。これは、機能的な意味でより純粋なラムダになります。
関数が式である場合、それは言語内の「ファーストクラスの市民」です。私はそれですべての重要なことを行うことができます:
x = lambda(){ return "Hello World"; }
doit( 1, 2, lambda(a,b){ return a > b; }, 3 )
x = (lambda(a){ return a+1; }) + 5 // type error, not syntax error
(lambda(a,b){ print(a); log(b); })( 1, 2 ) // () is valid operator here
ウィキペディアからクリップ:http : //en.wikipedia.org/wiki/Lambda#Lambda.2C_the_word
LispやPythonなどのプログラミング言語では、ラムダはラムダ計算の使用法に従い、匿名関数またはクロージャを示すために使用される演算子です。