「ラムダ」コードとは何ですか?


16

私は最近、人々が「ラムダ」であるコードについて話すのを聞いたことがあります。このフレーズを聞いたことがありません。どういう意味ですか?


やった 数回。何度か試してみましたが、残念ながら成功しませんでした。たぶんあなたはもっと運がいいでしょうか?責任者の方々に感謝します。
オリバーモラン

10
@Oliver、ここで質問することの一部は、あなたがその質問に答えるためにあなたが何をしたかを示すことです。そうすれば、人々はあなたがしたことと行き詰まってしまうのと同じことをしようとしません。ウィキペディアまたはGoogleのリンクのどこで混乱したかを特定することで、以前は得られなかったものを参照しているだけなので、一般的なレベルでは答えが望んでいるものではない可能性があるため、これにより質問の回答が改善されます。他の人が投稿していることを試してみて、何が起こるか見てみてください。どのような結果に驚くかもしれません。
JBキング

7
「私のコードはラムダ」というラップからラップを作成できると思います。しかし、何の価値もありません。:-)
ポールネイサン

1
@JB King + JB King-丁寧なコメントありがとうございます。大まかに言えば、あなたの両方が言うことは賢明です。ただし、クエリによっては、他の場所では見つからない種類の応答を引き出すのに、簡潔で未解決の質問の方が適している場合があります。私の質問は、私が探していた種類の答えを正確に引き出しました。そうなるように言いました。以下の回答が、同じ質問を持つ他の人に役立つことを願っています。一部の人が質問に失望しているのと同時に、答えに満足しているのは皮肉です。
オリバーモラン

2
@Paul Nathan-あなたは、ラムダであるため、どんな標準でも動作することを明確に計画していないラムダです。サンダーよりも粗い!
グレナトロン

回答:


20

ラムダ式は、抽象化(匿名関数と呼ばれることもあります)、アプリケーション、または変数です(ほとんどの言語はこのリストに定数も追加します)。ラムダ用語は必ずしも関数ではなく、必ずしもパラメーターとして渡されるわけではありませんが、これは一般的な習慣です。

C#のラムダ式の一般的な例

例えば:

List<int> items = new List<int>();
items.add(1);
items.add(2);
items.add(1);
items.add(3);

int CountofOnes = items.FindAll(item => item == 1).Count();

Console.Out.WriteLine(CountofOnes);

出力されます:2

このコードでは、ラムダ構造をFindAll.NETのListオブジェクトの関数に渡します。

items.FindAll(item => item == 1)

この呼び出しのラムダは単純な方程式を実行し、ブール値を返し、FindAll何をすべきかを伝えます。


2
それはまったく真実ではありません。ラムダ式は、抽象化(必ずしも小さいとは限りません)、アプリケーション、または変数です(ほとんどの言語はこのリストに定数も追加します)。ラムダ用語は必ずしも関数ではなく、必ずしもパラメーターとして渡されるわけでもありません。
SKロジック

わかりました、答えを修正します。
ティモシーグルーテ

3
関数ではないラムダ式の例を教えてください。
インゴ

1
@Ingo、これはもちろんラムダ計算の用語です。 en.wikipedia.org/wiki/Lambda_calculus#Lambda_terms
SKロジック

1
@ SK-logic違った見方をしたい。HaskellやC#のような言語は、let(rec)コンストラクトまたは「スーパーコンビネータ」(つまり、最上位レベルの関数バインディング)の形式で関数を名前にバインドすることを可能にします。ここで元のラムダ用語を適用するのが正しいとは思わない。LCではそのようなことは不可能だからです(それがまさに、再帰にYコンビネーターが必要な理由です)。Haskellでの((\ xy-> x)a)と(const a)の結果は同じであり、両方ともアプリケーションですが、私は「ラムダアプリケーション」として最初の用語のみを使用します。
インゴ

3

匿名(名前のない)関数、または通常は別の関数の引数としてインライン化されるオブジェクト。

したがって、名前空間の汚染は少なくなります。


1

ラムダは通常、関数型プログラミングコンテキストの関数式を指します。

これは、Pythonのラムダ式です。

lambda x: x + 1

パラメーターxを1 増やす関数を表します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.