質問

誰かがラムダとは何かの良い説明を提供できますか?彼らにはタグがあり、C#の質問の秘密を知っていますが、そもそもそれらが何であるかについての適切な定義と説明はまだ見つかりません。

役に立ちましたか?

解決

クロージャー、ラムダ、および匿名関数は必ずしも同じものではありません。

匿名関数とは、独自の名前を持たない(または、少なくとも必要とする)関数です。

クロージャは、スコープから外れた後でも、宣言時にレキシカルスコープにあった変数にアクセスできる関数です。匿名関数は必ずしもクロージャである必要はありませんが、ほとんどの言語で使用されており、そうでない場合はあまり有用ではありません。

ラムダは、コンピューターサイエンスに関する限り、あまり明確に定義されていません。多くの言語ではこの用語を使用していません。代わりに、単にクロージャーまたはアノン関数と呼ぶか、独自の用語を考案します。 LISPでは、ラムダは単なる匿名関数です。 Pythonでは、ラムダは単一の式に特に制限された匿名関数です。さらに、名前付き関数が必要です。ラムダは両方の言語のクロージャーです。

他のヒント

クロージャまたは匿名関数とも呼ばれます。 こちらで最適な説明を見つけました。基本的に、関数の引数として渡すことができるインラインコードブロック。

"ラムダ" ラムダ計算または特定のラムダ式を指します。ラムダ計算は、基本的に関数を扱う論理と数学の分岐であり、関数型プログラミング言語

〜ウィリアム・ライリー・ランド

これは、インラインで宣言された単なる匿名関数であり、最も一般的には、本格的な関数を作成したくないときにデリゲートに割り当てられます。

lisp / schemeのような言語では、関数パラメーターとしてかなり自由に渡されますが、C#のイディオムは通常、linqやイベント処理コードの作成など、関数の遅延評価にのみ使用されるラムダを検出します。ビットターサー。

実際には、プログラミングには「ラムダ」のようなものはありません。言語などに依存します。

要するに、通常、「ラムダを持っている」言語は、無名関数、または場合によってはクロージャという用語を使用します。そのように、Rubyで:

f = lambda { return "this is a function with no name" }
puts f.call

以前の回答に対する回答:
-匿名関数の重要な点は、名前を必要としないことではありません。
-クロージャーは別の概念です。
-巨大なウィキペディアの記事は、これを明確にするものではありません。

次の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などのプログラミング言語では、ラムダは、ラムダ計算を使用した後、匿名関数またはクロージャを示すために使用される演算子です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top