[Language-agnostic] ラムダとは何ですか?


Answers

クロージャや匿名関数とも呼ばれています。私はここで最善の記述を見つけました。 基本的に、関数の引数として渡すことができるコードのインラインブロック。

Question

誰かがラムダとは何かをよく説明できますか? 私たちはそれらのためのタグを持っており、彼らはC#の質問の秘密ですが、私はまだ彼らが最初に何があるのか​​についての良い定義と説明を見つける必要があります。




これは、インラインで宣言された無名関数です。本格的な関数を記述したくない場合は、代理人に代入されるのが最も一般的です。

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




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

私の答えは3つの部分に分かれています:
ラムダは、式でもある関数です。 これは重要なことです。
2.いわゆる "lambdas"を実装する多くの言語は、これらの短い関数をより簡単かつ迅速に書くために文法的な砂糖を追加しますが、これは必須ではありません。
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