운람다
Unlambda패러다임 | 거의 순수한 기능 |
---|---|
설계자. | 데이비드 마도어 |
개발자 | 데이비드 마도어 |
첫 등장 | 1999년 6월 28일; | 전
안정적 해제 | 2.0.0 / 1999년 12월 20일; 전 |
타이핑 규율 | 언타이프드 |
구현 언어 | Scheme, C, Java |
면허증 | GPL 2.0 이상 |
웹사이트 | www.madore.org/ |
운람바는 데이비드 마도어가 고안한 최소한의 "거의 순수한"[1] 기능적 프로그래밍 언어다.이것은 람다 연산자 또는 자유 변수가 없는 표현 체계인 결합 논리에 기초한다.주로 두 가지 내장 기능에 의존한다(Anterned-in function).s
그리고k
) 및 적용 연산자(서면)`
, 백쿼트 문자).이것만으로도 튜링 완성이 되지만, 사용자와의 상호작용이 가능한 입출력(I/O) 기능, 일부 단축 기능, 게으른 평가 기능도 있다.변수는 지원되지 않는다.
언람바는 GNU GPL(General Public License) 2.0 이상에 따라 배포되는 무료 오픈소스 소프트웨어다.[clarification needed]
기본 원리
난해한 프로그래밍 언어로서, Unlambda는 실용적 사용보다는 매우 순수한 기능적 프로그래밍의 시연으로서 의미가 있다.그것의 주요 특징은 전통적인 연산자와 데이터 유형의 부족이다. 프로그램의 유일한 데이터 종류는 단일 변수 함수다.그럼에도 불구하고 데이터는 람다 미적분학에서와 같이 적절한 함수로 시뮬레이션할 수 있다.다중 매개변수 함수는 커리어의 방법을 통해 나타낼 수 있다.
운람바는 추상화 제거 또는 함수를 포함한 모든 저장된 변수의 제거 원리에 기초한다.순전히 기능적인 언어로서 운람바의 기능은 일등품이며, 그런 물건들만이 유일하다.
다음은 Unlambda의 Hello World 프로그램의 실행이다.[1]
r``.H.E.L.O.R.L.di.
기본 제공 기능
표기법.x
하나의 인수를 취하여 변경하지 않고 반환하는 함수를 나타내며, 단일 문자 x를 호출할 때 부작용으로 인쇄한다. i
그러한 부작용이 없는 ID 함수의 버전을 나타낸다. 여기서 더미 인수로 사용된다.프로그램`.di
을 적용하다d
-더미 인수에 대한 함수를 더미i
돌아오는i
그리고 편지 인쇄d
부작용으로마찬가지로``.l.di
먼저 적용하다.l
로.d
, 편지 인쇄l
그리고 돌아온다.d
;의 이 결과.d
그런 다음 에 적용된다.i
앞의 예와 같이함수r
뉴라인 문자를 출력하는 기능을 위한 통사설탕이다.
Unlambda에서 제공하는 다른 중요한 기능에는 다음이 포함된다.k
그리고s
기능들 k
상수 기능 제조: 의 결과`kx
호출되면 x를 반환하는 함수.따라서 의 가치``kxy
x와 y는 모두 x이다.
s
일반화된 평가 운영자. ```sxyz
로 평가하다.``xz`yz
모든 x, y, z에 대해.는 것은 주목할 만한 사실이다.s
그리고k
스키 콤비네이터 미적분학에 설명된 대로 계산을 수행하기에 충분하다.간단한 예로서, ID 함수는i
으로 실행될 수 있다.``skk
, 그 이후```skkx
모든 x에 대해 x 산출량
Unlambda의 유일한 흐름 제어 구조는 전류 연속성을 가진 호출이며, 표시됨c
. 형식의 표현일 때`cx
평가되고, 그 순간의 통역자의 상태를 나타내는 특별한 연속 객체가 구성된다.그런 다음 x를 평가하고, 그 결과를 인수로 연속 객체가 주어진다.인수에 연속성이 적용되지 않는 경우, 인수의 값`cx
식은 x의 값과 같다. 그러나 연속 객체가 y 값에 적용되면 x의 실행이 즉시 중단되고 전체 값이 된다.`cx
표현은 y이다.
운램다의 실행 의미론들은 일반적으로 열성적인 평가이지만, 게으른 평가 옵션이 존재하는데, 이는 이 방법의 사용으로 나타난다.d
교환원의일반적으로 폼의 표현식을 평가하기 위해`xy
, unlambda는 먼저 x를 평가한 다음 y를 평가한 다음 x를 y에 적용한다.그러나 x가 특수 값으로 평가되는 경우d
, 그런 다음 y는 평가되지 않으며, 대신 표현식의 값`dy
인수 z에 적용할 때 y를 평가한 다음 값을 z에 적용하는 특수 "수집 계산" 객체.부작용이 없을 때, 이것은 정확히 같은 것이다.`iy
차이점은`iy
반면 y의 모든 부작용은 즉시 실행한다.`dy
결과가 다른 논거에 적용될 때까지 부작용을 방어하다
언람바의 다음 내장 연산자는v
, 그것은 그것의 주장과 반환을 무시한다.v
. 이 기능은 엄격하게 필요하지 않다.v
으로 실행될 수 있다.``s`k``s``s`kskk`k``s``s`kskk
, 그러나 그것은 편의상 공급된다.(위의 이 표현은 단순하다.`Yk
, whereY
고정 점 결합기를 나타낸다.)
버전 2 내장 기능
언람바 버전 2에는 더 많은 빌트인이 도입되었다.조작자가 입력을 촉진함@
그리고?u
. 언제@
함수 x에 적용되고, 입력에서 문자를 읽고, "현재 문자"로 저장되며, 그 다음 x가 에 적용된다.i
그러나 입력에 더 이상 사용할 수 없는 문자가 있는 경우 현재 문자는 정의되지 않은 상태로 유지되고 x는 에 적용된다.v
대신에함수가 있을 때?u
함수 x에 적용되고 그 결과는`xi
현재 캐릭터가 u이면, 그렇지 않으면`xv
평가된다.
"재프린트" 운영자도 있다.
. 언제` x
평가됨, 함수 x가 적용됨.u
만약 당신이 현재의 문자라면, 또는 tov
현재 문자가 없는 경우
마지막으로 출구 운영자가 있다.e
. 언제e
x에 적용되고, 프로그램의 실행이 종료되며, x는 프로그램의 결과로 취해진다(현재 존재하는 대부분의 통역사는 어쨌든 결과를 무시한다).
참고 항목
참조
- ^ a b Chu-Carroll, Mark C. (2006-08-11). "Friday Pathological Programming: Unlambda, or Programming Without Variables". Good Math, Bad Math (blog). ScienceBlogs.
- 펠릭스-헤르난데스 캄포스(2002년 4월 1일), 강연 28: 노스캐롤라이나 대학 COMP144
- 原 悠 (Yutaka Hara) (2008). Rubyで作る奇妙なプログラミング言語 (in Japanese). Tōkyō: Mainichikomyunikēshonzu. pp. 205–214. ISBN 978-4-8399-2784-4.