プログラミングの世界でラムダとは、他のすべての通常の変数と同じように受け渡しできる無名関数を意味します。いわゆる関数型言語にはそれらが組み込まれていますが、再利用可能なコードを記述できるため、最近ではそれらをサポートする言語のセットが増えています。次のバージョンの C++ で記述された例を次に示します。
// write this once...
int transform_values(int * values, int n, function<int(int)> f) {
for(int i = 0; i < n; i++)
values[i] = f(values[i]);
}
int values[] = { 1, 2, 3, 4 };
// ... then call it to double the values in an array
transform_values(values, 4, [](int v) { return v * 2; });
C# やラムダをサポートする他の言語でも同様に見えます。今は「閉鎖」という言葉があります。これは、ラムダがローカル変数をキャプチャして、結果の計算に使用できることを意味します。
int local_variable = 5;
int values[] = { 1, 2, 3, 4 };
// ... then call it to multiply the values in an array
transform_values(values, 4, [=](int v) { return v * local_variable; });
変数local_variable
はクロージャ内でキャプチャされ、クロージャ内で使用できるようになりました。変数は、クロージャによって更新されることもあります。ラムダは、関数型言語の基本的な構成要素です。Haskell での例を次に示します。
map (\x -> x * 2) [1, 2, 3, 4]
上記の C++ コードと同じことを行います。指定された関数 (ここではラムダ) を使用して、リスト内の値を結果リストにマップします。haskell を使用すると、使用されている構文がラムダ計算の数学的概念にどのように対応しているかをよく確認できます。