Что такое lambda?

Может ли кто-нибудь дать хорошее описание того, что такое lambda? У нас есть тег для них, и они находятся в секретах вопроса C #, но мне еще предстоит найти хорошее определение и объяснение того, что они в первую очередь.

Закрытие, lambda и анонимные функции не обязательно одно и то же.

Анонимная функция – это любая функция, которая не имеет (или, по крайней мере, нуждается) свое собственное имя.

Закрытие – это функция, которая может обращаться к переменным, которые были в своей лексической области, когда они были объявлены, даже после того, как они вышли из сферы действия. Анонимные функции необязательно должны быть закрытыми, но они находятся на большинстве языков и становятся менее полезными, когда они не являются.

Лямбда … не совсем так четко определена, насколько компьютерная наука идет. Многие языки даже не используют термин; вместо этого они просто назовут их закрытием или анонимными функциями или придумают собственную терминологию. В LISP lambda – это просто анонимная функция. В Python lambda – это анонимная функция, ограниченная только одним выражением; ничего больше, и вам нужна именованная функция. Lambdas – это закрытие на обоих языках.

Также называется закрытием или анонимными функциями. Я нашел лучшее описание здесь . В принципе, встроенный блок кода, который может быть передан как аргумент функции.

«Лямбда» относится к исчислению lambda или к конкретному lambda-выражению. Лэмбда-исчисление – это, в основном, ветвь логики и математики, которая занимается функциями и является основой языков функционального программирования .

~ Уильям Райли-Ланд

Это анонимная функция, объявленная inline, обычно назначаемая делегату, когда вы не хотите писать полноценную функцию.

В таких языках, как lisp / scheme, они часто передаются довольно либерально как параметры функции, но идиома на C # обычно находит лямбды, используемые только для ленивой оценки функций, как в linq, или для того, чтобы сделать код обработки событий немного терпеливым.

В программировании не существует такой вещи, как «lambda». Это зависит от языка и т. Д.

Короче говоря, обычно язык, на котором «lambdas» использует термин для анонимных функций или, в некоторых случаях, закрытий. Так вот, в Ruby:

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

В ответ на предыдущие ответы:
– Важная вещь об анонимных функциях заключается не в том, что они не требуют имени.
-Закрытия – это отдельная концепция.
Гигантская статья в Википедии не делает этого более ясным.

Вот мой ответ в трех частях:
1. Лямбда – это функция, которая также является выражением. Это важная вещь.
2. Многие языки, которые реализуют так называемые «lambdas», добавляют немного синтаксического сахара, чтобы упростить и ускорить запись этих коротких функций, но это не требуется.
3. Некоторые языки могут потребовать, чтобы lambda не имела побочных эффектов . Это было бы более чистым лямбдой в функциональном смысле.

Когда функция является выражением, это «гражданин первого classа» в пределах языка. Я могу сделать с ним все важные вещи:

 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, lambda является оператором, используемым для обозначения анонимных функций или замыканий, следуя использованию lambda-исчисления.

  • Алгоритм естественной сортировки
  • Лучший способ найти точку на круге, ближайшем к данной точке
  • Изучение теории сбора мусора
  • Алгоритм для выделения перекрывающихся прямоугольников?
  • Алгоритм генерации анаграмм
  • Что такое инъекция зависимости?
  • Что такое непрозрачное значение в C ++?
  • Линия пересечения двух плоскостей
  • Как вы находите точку на заданном перпендикулярном расстоянии от линии?
  • Что такое оптимизация хвостового звонка?
  • Как проверить, пересекает ли сегмент линии прямоугольник?
  • Давайте будем гением компьютера.