누군가 Lambda가 무엇인지에 대한 좋은 설명을 제공 할 수 있습니까? 우리는 그들에 대한 태그를 가지고 있으며 그들은 C # 질문의 비밀에 있지만 처음에 그들이 무엇인지에 대한 좋은 정의와 설명을 아직 찾지 못했습니다.
누군가 Lambda가 무엇인지에 대한 좋은 설명을 제공 할 수 있습니까? 우리는 그들에 대한 태그를 가지고 있으며 그들은 C # 질문의 비밀에 있지만 처음에 그들이 무엇인지에 대한 좋은 정의와 설명을 아직 찾지 못했습니다.
답변:
클로저, 람다 및 익명 함수가 반드시 동일한 것은 아닙니다.
익명 함수는 자체 이름이 없거나 최소한 필요한 함수입니다.
클로저가 떨어진 후에도,이 선언되었을 때의 어휘 범위에 있었다 변수에 액세스 할 수있는 기능입니다 밖으로 . 익명 함수는 반드시 클로저 일 필요는 없지만 대부분의 언어로되어 있으며 그렇지 않은 경우 유용하지 않게됩니다.
람다는 컴퓨터 과학이하는 한 그렇게 잘 정의되어 있지 않습니다. 많은 언어에서이 용어를 사용하지 않습니다. 대신 그들은 단지 그것들을 클로저 또는 anon 함수라고 부르거나 그들 만의 용어를 발명 할 것입니다. LISP에서 람다는 익명의 함수입니다. Python에서 람다는 단일 표현식으로 특별히 제한되는 익명 함수입니다. 더 이상 이름이 지정된 함수가 필요합니다. Lambda는 두 언어로 된 클로저입니다.
"Lambda"는 Lambda 미적분 또는 특정 람다 식을 나타냅니다. Lambda 미적분은 기본적으로 함수를 다루는 논리 및 수학의 한 가지이며 함수형 프로그래밍 언어 의 기초입니다. .
~ 윌리엄 라일리 랜드
이전 답변에 대한 응답 :
-익명 함수에 대한 중요한 점은 이름이 필요하지 않다는 것이 아닙니다.
-폐쇄는 별도의 개념입니다.
-거대한 위키피디아 기사는 이것을 더 명확하게하지 않습니다.
다음은 세 부분으로 된 내 대답입니다.
1. 람다는 표현식이기도 한 함수입니다. 이것은 중요한 것입니다.
2. 소위 "람다 (lambda)"를 구현하는 많은 언어는 이러한 짧은 함수를 더 쉽고 빠르게 작성하기 위해 약간의 구문 설탕 을 추가 하지만 필수는 아닙니다.
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
wikipedia에서 잘림 : http://en.wikipedia.org/wiki/Lambda#Lambda.2C_the_word
Lisp 및 Python과 같은 프로그래밍 언어에서 lambda는 람다 계산법 사용에 따라 익명 함수 또는 클로저를 나타내는 데 사용되는 연산자입니다.