운람다

Unlambda
운람다
패러다임거의 순수기능
설계자.데이비드 마도어
개발자데이비드 마도어
첫 등장1999년 6월 28일; 22년(1999-06-28)
안정적 해제
2.0.0 / 1999년 12월 20일; 22년(1999-12-20)
타이핑 규율언타이프드
구현 언어Scheme, C, Java
면허증GPL 2.0 이상
웹사이트www.madore.org/~www.madore.org//who/unlambda

운람바는 데이비드 마도어가 고안한 최소한의 "거의 순수한"[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를 반환하는 함수.따라서 의 가치``kxyxy는 모두 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를 평가한 다음 xy에 적용한다.그러나 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. 언제ex에 적용되고, 프로그램의 실행이 종료되며, x는 프로그램의 결과로 취해진다(현재 존재하는 대부분의 통역사는 어쨌든 결과를 무시한다).

참고 항목

참조

  1. ^ a b Chu-Carroll, Mark C. (2006-08-11). "Friday Pathological Programming: Unlambda, or Programming Without Variables". Good Math, Bad Math (blog). ScienceBlogs.

외부 링크