“Lambda the ultimate”라는 문구의 기원과 의미는 무엇입니까?


43

몇 년 동안 함수형 프로그래밍 언어를 엉망으로 삼았으며이 문구가 계속 발생합니다. 예를 들어, "The Little Schemer의 장입니다.이 이름은 블로그 이름보다 앞선 이름입니다. (아니요,이 장은 내 질문에 대답하는 데 도움이되지 않습니다.)

나는 람다가 의미하는 바를 이해합니다. 익명 함수의 아이디어는 간단하고 강력하지만이 맥락에서 "궁극의"가 무엇을 의미하는지 이해하지 못합니다.

이 문구를 본 장소 :

  1. The Little Schemer 8 장의 제목
  2. 블로그 : http://lambda-the-ultimate.org/
  3. 일련의 "궁극의 X 람다"논문 : http://library.readscheme.org/page1.html

나는 여기에 참조가 누락 된 것처럼 느낍니다.


1
인기 블로그의 이름 인 것 같지만 다른 역사적인 소스가 있다면 관심이 있습니다.
Klaim

1
이 문구를 본 장소에 대한 언급을 할 수 있습니까? 그 맥락은 답을 찾는 데 큰 도움이 될 것입니다.
Adam Crossland

@Adam-몇 가지 참조가 추가되었습니다.
Eric Wilson

논문 시리즈 링크가 cultureua.com으로 리디렉션됩니다. 누군가 업데이트 된 링크를 제공 할 수 있습니까?
tejasbubane

답변:


47

예, 그것은 70 년대의 부부에서 시작하여 여러 논문의 제목에서 되풀이되는 문구입니다. Sussman과 Steele은 프로그래밍을 위해 람다 미적분법을 사용하여 프로그래밍 하기 위해 " Scheme " 이라는 미니멀리스트 리스프 (Lisp) 방언 을 사용합니다. 목적. 여기서 논문 자체를 찾을 수 있습니다 . 그들은 흥미롭고 놀랍도록 관련이 있습니다.

나는 이것이 명시 적으로 언급되어 있는지 확실하지 않지만 (문맥을 읽고 논문의 일반적인 배경과 연구 관심사를 알고 있음) 문구가 단순히 람다 추상화에 대한 그들의 논쟁에 대한 주목할만한 구호라는 것이 분명합니다 , 전산 적 프리미티브로서, 형식적인 의미에서 보편적 일뿐 아니라 (어떤 방식 으로든 어떤 방식 으로든 프로그램을 인코딩 할 수는 있지만) 어쨌든 모든 의미의 구성은 다른 언어로 존재한다는 실제적인 의미 에서 보편적이다. 처음부터 시작하여 효율적이고 자연스러운 방식으로 람다 기반 언어로 다시 구현할 수 있습니다.

반복되는 문구는 "모든 X에 대해 람다는 궁극적 인 X"라는 명백한 일반화 된 형태로 이어집니다. 이는 LtU가 프로그래밍 언어와 관련이 있다는 점을 지적하면서 블로그 이름으로 "Lambda the Ultimate"를 의미하는 것으로 일반적으로 인식했습니다. 디자인과 이론. 아이러니하게도, LtU는 아마도 람다가 최고의 구현 이 아닌 것에 대해 말할 수있는 사람을 찾을 수있는 가장 좋은 장소 중 하나 일 것입니다 . :]

Sussman은 Scheme 언어를 사용하고 람다 추상화를 개념으로 소개하는 데 상당한 시간을 소비하는 SICP 의 저자 중 하나입니다 .


2
고전 논문을 찾아 +1. Guy L. Steele, Jr.Common LISP 에 관한 책을 거의 썼습니다 . LISP와 Scheme은 J , Fortress 및 기타 언어에 계속 기여한 Guy의 길의 끝이 아닙니다 . Guy는 Jargon FileHacker 's Dictionary 에도 참여했습니다 .
John Tobler

@ 존 토 블러 : 아주 그렇습니다! 나는 Sussman에만 집중했다. 왜냐하면 그는 Lambda Papers와 깊은 관련이있는 Scheme에 더 관여하고있는 것처럼 보였기 때문이다. Steele이 실제로 수행 한 것이 아니기 때문에 Steele이 다른 어떤 것도하지 않았다는 인상을주는 것은 아닙니다. :]
CA McCann

28

Lambda The Ultimate는 람다 미적분의 람다 는 모든 프로그래밍 언어, 과거, 현재 및 미래의 모든 내장 개념을 효과적으로 구현할 수 있다는 아이디어를 말합니다 . 클래스, 모듈, 패키지, 객체, 메소드, 제어 흐름, 데이터 구조, 매크로, 연속, 코 루틴, 생성기, 목록 이해, 스트림 등

그런 궁극적 인 성격 에는 익명의 기능을 나타내는 것이 포함됩니다 . 그러나 람다는 기본적으로 익명의 기능으로 제한되지 않습니다. 그들은 그런 식으로 배우지 만, 람다의 본질은 이름이없는 수학 함수보다 훨씬 깊습니다. 즉, 나는 다음과 관련하여 문제를 겪습니다.

나는 람다가 의미하는 바를 이해합니다. 익명 함수의 아이디어는 간단하고 강력하지만이 맥락에서 "궁극의"가 무엇을 의미하는지 이해하지 못합니다.

실질적인 문제로서, 가치에 의한 호출 / 적용이 아닌 (수학적 함수 인) 구문 추상화 ( '매크로')로 람다를 사용하는 것은 람다는 실제로 람다가 모든 프로그래밍 언어 처리 시스템의 핵심.

이론 : Bertrand Russell의 역설과 순진한 이론에서 이해의 공리 (및 확장)와 흥미로운 관계가있다. 람다는 set-builder 표기법이 설정하는 기능을 수행하는 것입니다. lambda는 함수 작성기 표기법입니다. (lambda (x) (* xx))와 평가 대상 (제곱 함수) 간에는 일반적으로 무시되는 중요한 차이가 있습니다. 일반적으로 두 가지, 즉 표기법과 표기법 (교회와 Frege가 실수 한 것)을 구별하지 못하면 역설을 어기 게됩니다. 세트와 Frege의 경우, 오류를 나타내는 것은 Bertrand Russell의 세비야 이발사입니다. 기능과 교회의 경우 Alan Turing의 Halting Oracle입니다.

역설은 훌륭하고 실용적입니다. 우리는 EVAL이 표현 가능하기를 원하며 람다는 단순한 함수 이상의 의미를 갖기를 원합니다. 반대를 가정하면 모순이 발생한다는 것이 바람직한 결과입니다. 람다는 단순한 기능만을 표현한다면 거의 궁극적 일 수 없습니다.


라켓 (이전의 PLT Scheme)은 실질적인 프로그래밍 언어가 처음부터 '단순한 람다'로 구축 될 수 있다는 아이디어를 계속해서 주장하고 있습니다.

Shutt의 Kernel 은 람다는 궁극적 인 추상화가 아니라고 주장합니다. 그는 Sussman에게 FEXPR로 알려진 더 원시적 인 개념 (그리스어, vau라고 불림)이 하나 더 있다고 주장합니다.

Felleisin과 회사 (라켓 용)는 단계 개념 또는 메타 레벨을 사용하여 Shutt 's vau의 강력한 기능을 최대한 활용할 수 있습니다. '단계'와 '단계'는 실제로 시간이 완전히 구별되지 않습니다. (그래서, 그들은 더 높은 단계에서 람다 잘 충분히 VAU에 근접 있다고 주장한다.) 사실, 그들은이 단계는 주장 보다 정밀하게 더 제한 되 고, FEXPRs 이상; 간단히 말해 "FEXPR은 너무 강력합니다"(셔트가 주장한 완드의 연구 참조).

Brian Programming 's 3-Lisp, "프로그래밍 언어에서의 절차 적 반영"은 표기법 (사물 / 참조 / 가치 / 결과)과 크게 구별되는 표기법 (기호 / 언어 / 프로그램)을 따라 LISP 유사 언어 이론을 엄격하게 재구성하려고 시도합니다. ). http://dspace.mit.edu/handle/1721.1/15961

Mitchell Wand의 "FEXPRs 이론은 사소하다"는 Kent Pittman이 FEXPRs (Felleisen처럼 FEXPR에 대해 컴파일을 너무 어렵게 만든다고 주장함)를 위해 만든 (임시?) 관에 더 많은 손톱을 보냅니다.

Paul Graham은 "온리 스프 (On Lisp)"에서 힘과 길이로 실제 전력은 값의 변환기 (수학적 함수)가 아니라 구문의 변환기 (매크로)로서 람다라고 주장합니다. Plotkin의 응용 람다 미적분학 개발은 다소 대조적 인 것으로 간주 될 수 있습니다. Plotkin은 교회의 미적분을 가치 별 / 응용 적 부분 집합으로 제한하기 때문입니다. 물론 적용 부분을 효율적으로 처리하는 것이 매우 중요하므로 람다 사용에 특화된 이론을 개발하는 것이 중요합니다. (Plotkin과 Graham은 서로에 대해 논쟁하지 않습니다.)

사실, 람다의 궁극적 인 개념은 일반적으로 효율성과 표현력 사이의 영원한 논쟁에 대한 비틀기 일뿐입니다. 람다는 표현력을위한 최고의 도구이며, 충분한 연구를 통해 궁극적으로 효율성을위한 최고의 도구임이 입증 될 것입니다. 다시 말해, 원한다면 프로그래밍 언어의 미래를 람다 미적분학의 실질적으로 관련된 모든 단편을 효율적으로 구현하는 방법에 대한 연구로 볼 수 있습니다.

Landin의 "The Next 700 Programming Languages"( http://www.cs.cmu.edu/~crary/819-f09/Landin66.pdf )는 Lambda가 Ultimate라는 개념을 개발하는 데 도움이되는 참조 자료입니다.


와. 기립 박수에 대한 답변. 따라야 할 많은 포인터.
hmijail

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.