Может ли кто-нибудь дать хорошее описание того, что такое лямбда? У нас есть теги для них, и они касаются секретов вопроса C #, но мне еще предстоит найти хорошее определение и объяснение того, что они из себя представляют.
Может ли кто-нибудь дать хорошее описание того, что такое лямбда? У нас есть теги для них, и они касаются секретов вопроса C #, но мне еще предстоит найти хорошее определение и объяснение того, что они из себя представляют.
Ответы:
Замыкания, лямбда-выражения и анонимные функции не обязательно одно и то же.
Анонимная функция - это любая функция, которая не имеет (или, по крайней мере, не нуждается) в собственном имени.
Замыкание - это функция, которая может обращаться к переменным, которые находились в ее лексической области видимости, когда она была объявлена, даже после того, как они выпали из области видимости. Анонимные функции не обязательно должны быть закрытыми, но они есть в большинстве языков и становятся менее полезными, когда это не так.
Лямбда… не совсем так хорошо определена в компьютерных науках. Многие языки даже не используют этот термин; вместо этого они просто будут называть их замыканиями или анонимными функциями или изобретать свою собственную терминологию. В LISP лямбда - это просто анонимная функция. В Python лямбда - это анонимная функция, ограниченная одним выражением; что-нибудь еще, и вам понадобится именованная функция. Лямбды - это замыкания на обоих языках.
Также называется закрытием или анонимными функциями .. Лучшее описание я нашел здесь . По сути, встроенный блок кода, который можно передать в качестве аргумента функции.
«Лямбда» относится к лямбда-исчислению или к определенному лямбда-выражению. Лямбда-исчисление - это в основном раздел логики и математики, который имеет дело с функциями и является основой языков функционального программирования .
~ Уильям Райли-Лэнд
Это просто анонимная функция, объявленная встроенной, обычно назначаемая делегату, когда вы не хотите писать полноценную функцию.
В таких языках, как lisp / scheme, они часто довольно свободно передаются как параметры функций, но идиома в C # обычно находит лямбды, используемые только для ленивого вычисления функций, как в linq, или для того, чтобы сделать код обработки событий немного короче.
В программировании нет такого понятия, как «лямбда». Это зависит от языка и т. Д.
Короче говоря, обычно в языке, который «имеет лямбды», термин используется для обозначения анонимных функций или, в некоторых случаях, замыканий. Вот так в Ruby:
f = lambda { return "this is a function with no name" }
puts f.call
В ответ на предыдущие ответы:
-В анонимных функциях важно не то, что они не требуют имени.
-Корпуса - отдельное понятие.
-Гигантская статья в Википедии не проясняет это.
Вот мой ответ, состоящий из трех частей:
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, лямбда - это оператор, используемый для обозначения анонимных функций или замыканий после использования лямбда-исчисления.