[language-agnostic] Lambda 란 무엇입니까?

누군가 Lambda가 무엇인지에 대한 좋은 설명을 제공 할 수 있습니까? 우리는 그들에 대한 태그를 가지고 있으며 그들은 C # 질문의 비밀에 있지만 처음에 그들이 무엇인지에 대한 좋은 정의와 설명을 아직 찾지 못했습니다.



답변

클로저, 람다 및 익명 함수가 반드시 동일한 것은 아닙니다.

익명 함수는 자체 이름이 없거나 최소한 필요한 함수입니다.

클로저가 떨어진 후에도,이 선언되었을 때의 어휘 범위에 있었다 변수에 액세스 할 수있는 기능입니다 밖으로 . 익명 함수는 반드시 클로저 일 필요는 없지만 대부분의 언어로되어 있으며 그렇지 않은 경우 유용하지 않게됩니다.

람다는 컴퓨터 과학이하는 한 그렇게 잘 정의되어 있지 않습니다. 많은 언어에서이 용어를 사용하지 않습니다. 대신 그들은 단지 그것들을 클로저 또는 anon 함수라고 부르거나 그들 만의 용어를 발명 할 것입니다. LISP에서 람다는 익명의 함수입니다. Python에서 람다는 단일 표현식으로 특별히 제한되는 익명 함수입니다. 더 이상 이름이 지정된 함수가 필요합니다. Lambda는 두 언어로 된 클로저입니다.


답변

클로저 또는 익명 함수라고도 합니다 . 여기서 가장 좋은 설명을 찾았습니다 . 기본적으로 함수에 인수로 전달할 수있는 인라인 코드 블록입니다.


답변

“Lambda”는 Lambda 미적분 또는 특정 람다 식을 나타냅니다. Lambda 미적분은 기본적으로 함수를 다루는 논리 및 수학의 한 가지이며 함수형 프로그래밍 언어 의 기초입니다. .

~ 윌리엄 라일리 랜드


답변

인라인으로 선언 된 익명 함수일 뿐이며, 가장 일반적으로 완전한 기능을 작성하고 싶지 않을 때 대리자에 할당됩니다.

lisp / scheme과 같은 언어에서는 종종 함수 매개 변수로 매우 자유롭게 전달되지만 C #의 관용구는 일반적으로 linq에서와 같이 함수의 지연 평가 또는 이벤트 처리 코드를 약간 간결하게 만드는 데만 사용되는 람다를 찾습니다.


답변

프로그래밍에서 ‘람다’와 같은 것은 실제로 없습니다. 언어 등에 따라 다릅니다.

간단히 말해, 일반적으로 ‘람다가있는’언어는 익명 함수 또는 경우에 따라 폐쇄라는 용어를 사용합니다. 마찬가지로 Ruby에서 :

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


답변

이전 답변에 대한 응답 :
-익명 함수에 대한 중요한 점은 이름이 필요하지 않다는 것이 아닙니다.
-폐쇄는 별도의 개념입니다.
-거대한 위키피디아 기사는 이것을 더 명확하게하지 않습니다.

다음은 세 부분으로 된 내 대답입니다.
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는 람다 계산법 사용에 따라 익명 함수 또는 클로저를 나타내는 데 사용되는 연산자입니다.