프로그래밍 언어에서 클로저는 널리 사용되는 기능입니다. Wikipedia의 말 : (강조 광산) :
컴퓨터 과학에서 클로저 (...)는 해당 함수 의 비 로컬 변수에 대한 참조 환경과 함께 제공되는 함수입니다. 클로저를 사용하면 함수가 즉각적인 어휘 범위 밖의 변수에 액세스 할 수 있습니다.
따라서 클로저는 본질적으로 자신의 범위를 벗어난 변수를 사용할 수있는 (익명?) 함수 값입니다. 내 경험상 이는 정의 지점에있는 변수에 액세스 할 수 있음을 의미합니다.
그러나 실제로 개념은 기능적 프로그래밍의 범위를 벗어나는 것으로 보인다. 언어마다 다른 의미론을 구현하며 심지어 opinons와의 전쟁이있는 것 같습니다. 많은 프로그래머들은 클로저가 무엇인지 알지 못하는 것처럼 보이며 익명 함수 이상으로 간주합니다.
또한 클로저를 구현할 때 큰 장애물이있는 것 같습니다. 가장 주목할만한 Java 7은 그것들을 포함시켜야했지만이 기능은 다음 릴리스로 푸시되었습니다.
폐쇄는 왜 그렇게 이해하기 어렵고 이해하기 어렵습니까? 이것은 너무 광범위하고 모호한 질문이므로 다음과 같은 상호 연결된 질문에 초점을 맞추겠습니다.
- 일반적인 의미 론적 형식주의 (작은 단계, 큰 단계 등)에서 클로저를 표현하는 데 문제가 있습니까?
- 기존 유형 시스템은 폐쇄에 적합하지 않으며 쉽게 확장 할 수 없습니까?
- 전통적인 스택 기반 프로 시저 변환에 따라 클로저를 가져 오는 것이 문제가됩니까?
이 질문은 일반적으로 절차 적, 객체 지향 및 스크립팅 언어와 관련이 있습니다. 내가 아는 한 기능 언어에는 아무런 문제가 없습니다.