익명 (람다) 함수 란 무엇입니까? 함수형 프로그래밍 언어에서 익명 함수의 공식적인 정의는 무엇입니까?
간단한 용어로, scheme / lisp에서 프로그래밍 할 때 익명 (lambda) 함수는 식별자에 바인딩되지 않은 함수라고 말합니다.
람다 함수에 대해 공식적으로 말할 수있는 모든 것입니까? 이 간단한 정의에 더 많은 세부 사항이 추가 될 수 있다고 생각합니다. 정교하게 감사합니다!
익명 (람다) 함수 란 무엇입니까? 함수형 프로그래밍 언어에서 익명 함수의 공식적인 정의는 무엇입니까?
간단한 용어로, scheme / lisp에서 프로그래밍 할 때 익명 (lambda) 함수는 식별자에 바인딩되지 않은 함수라고 말합니다.
람다 함수에 대해 공식적으로 말할 수있는 모든 것입니까? 이 간단한 정의에 더 많은 세부 사항이 추가 될 수 있다고 생각합니다. 정교하게 감사합니다!
답변:
람다 미적분학에서 모든 함수 (용어)는 익명입니다. 이것은 람다 미적분의 필수 속성입니다. 복잡한 함수는 이름을 지정하지 않고 간단한 함수로 구성 할 수 있습니다.
프로그래밍 언어에서는 대부분의 경우 함수에 이름을 지정하는 것이 바람직합니다. 이것이 우리가 생각하는 방식이므로 사람이 코드를 읽을 수있게하기 때문입니다. 그러나 컴파일은 실행 파일을 생성 할 때 결국 이름을 제거합니다 (디버깅 정보를 무시하는 경우).
언어에서 익명 함수 (이름이없는 함수)를 표현할 수 있으면 프로그래머와 컴파일러 모두에게 유리할 수 있습니다. 프로그래머는 종종 더 짧은 코드를 작성할 수 있으며, 컴파일러는 익명 함수가 주어진 시간에 사용된다는 것을 알고 더 잘 최적화 할 수 있습니다 다른 곳이 아니라 장소.
질문의 어느 부분에 중점을 두느냐에 달려 있습니다. 익명 함수에 대해 익명 인 속성 인 경우 실제로 유일한 대답은 바인딩되지 않은 값이라는 것 입니다. 일반적으로 함수에 대해 이야기하는 경우 익명 함수는 아마도 함수형 환경에서 응용 언어에 대한 람다 미적분학 사용의 가장 눈에 띄는 징후 일 것입니다 .
실제로 람다 미적분학 관점에서 람다 식은 바인딩을 만드는 데 사용되는 매우 구문적인 구문입니다. 람다 미적분학에 사용 된 표기법을 상기하십시오.
언어는 일반적으로 let
(ML과 같은 언어, 체계) 또는 define
(구성표) 와 같은 방법으로 최상위 수준에서 사용 가능한 바인딩을 만들거나 구문이나 구문 내에서 모듈이나 객체와 같은 함수보다 복잡한 구문을 만들 수 있지만 바인딩은 낮은 수준의 람다입니다.
체계 또는 lisp 방언과 같은 언어를 보면, 그 자금은 람다 미적분학이며 많은 특수 형태는 실제로 설탕으로 코팅 된 람다입니다.
들어 concatenative 언어 , 이야기는 약간 다릅니다. 람다는 필요하지 않으며 실제로는 비생산적입니다. 모든 것이 함수 일 때 익명 람다를 정의하는 요점은 무엇입니까 ?
이 두 종류의 언어 간에는 이중성이 있습니다. 후자는 포인트 프리 함수 조합에 중점을 두어 모든 것을 함수로 표현하려고 시도하는 반면, 전자는 더 정교한 미적분학을 연구하고 다른 언어 값과 같이 일급 값으로 함수를 갖기 위해 노력합니다. 이러한 관점에서 람다는 그 노력의 결과로 볼 수 있습니다.
이 답변에서 소개 된 주제에 대한 몇 가지 포인터 :