조이(프로그래밍 언어)
Joy (programming language)![]() |
패러다임 | 다중 데이터: 기능, 연결, 스택 지향 |
---|---|
설계자 | 만프레트 폰툰 |
개발자 | 만프레트 폰툰 존 코완 |
첫 등장 | 2001 |
안정적 해제 | 2003년 3월 17일 / 2003년 3월 17일 |
타이핑 규율 | 강하고 역동적인 |
주요 구현 | |
Joy0, Joy1, "Current Joy", "John Cowan's Joy", "JoyJ(jvmm in jvmm)" | |
영향을 받은 | |
스키마, FP, 포스 | |
영향받은 | |
요인, 고양이, V, 트리스 |
컴퓨터 과학에서의 조이 프로그래밍 언어는 호주 멜버른에 있는 라 트로베 대학의 만프레드 폰툰이 제작한 순기능 프로그래밍 언어다.기쁨은 람다 미적분보다 함수의 구성에 기초한다.그것은 디자인이 아니라 일종의 병렬 진화 및 융합 때문에 포스와 많은 유사점을 가지고 있는 것으로 밝혀졌다.존 백커스 FP의 기능 수준 프로그래밍 스타일에서도 영감을 받았다.[1]
작동 방식
기능 프로그래밍 언어(기능 수준 프로그래밍 언어와 운람바와 같은 일부 난해한 프로그래밍 언어 제외) 중에서 기쁨은 람다 연산자가 없어 형식적인 파라미터가 부족하기 때문에 특이하다.이를 일반적인 예로 설명하기 위해, 사각 함수를 명령 프로그래밍 언어(C)로 정의하는 방법은 다음과 같다.
인트로 정사각형의(인트로 x) { 돌아오다 x * x; }
변수 x는 함수를 호출할 때 제곱할 인수로 대체되는 매개변수다.
기능 언어(Scheme)에서 동일한 기능을 정의할 수 있다.
(정의를 내리다정사각형의 (람다(x) (*x x)))
이것은 여러 가지 면에서 다르지만, 여전히 같은 방법으로 x라는 매개 변수를 사용한다.
Joy에서 제곱 함수는 다음과 같이 정의된다.
Define square == dup * .
조이에서 모든 것은 스택을 인수로 삼고 결과적으로 스택을 반환하는 함수다.예를 들어, 숫자 '5'는 정수 상수가 아니라 숫자 5를 스택으로 밀어 넣는 짧은 프로그램을 나타낸다.
- dup 연산자는 단순히 스택의 복사본을 밀어내서 스택의 상단 요소를 복제한다.
- * 연산자는 두 개의 숫자를 스택에서 꺼내어 그들의 제품을 밀어낸다.
그래서 정사각형 함수는 상단 원소의 사본을 만든 다음, 스택의 두 개의 상단 원소를 곱하여 원래의 상단 원소의 정사각형을 그대로 두고, 형식적인 파라미터가 필요 없다.이러한 퀵소트의 정의에서 알 수 있듯이, 조이를 간결하게 만든다.
Define qsort == [small] [] [uncons [> split] [enconcat] binrec.
"binrec"는 Joy의 많은 재귀적 결합자 중 하나로, 이진 재귀성을 구현한다.그것은 다음을 나타내는 4개의 인용된 프로그램을 스택 상단에 기대한다.
- 종료 조건(목록이 "작음"(1 또는 0 요소) 이미 정렬된 경우,
- 종료 조건이 충족될 경우 수행할 작업(이 경우 아무 조치도 없음)
- 기본적으로 수행할 작업(각 요소를 피벗과 비교하여 목록을 두 부분으로 나눈다) 및 마지막으로 수행할 작업
- 마지막에 수행할 작업(두 개의 정렬된 절반 사이에 피벗 삽입).
수학적 순도
조이에서 의미함수는 통사적 모노이드에서 의미적 모노이드에 이르는 동형성이다.즉, 기호의 결합의 통사적 관계는 함수의 구성의 의미적 관계에 직접 연결된다.그것은 1대1로 되어 있지만 1대1로 되어 있지 않기 때문에 이형성보다는 동형성이다. 즉, 기호는 둘 이상의 의미를 가지지는 않지만, 일부 기호의 순서는 같은 의미를 갖는다(예: "dup +"와 "2 *").
조이(Joy)는 "두 프로그램의 결합은 두 프로그램이 나타내는 기능의 구성을 나타낸다"[2]는 통합 프로그래밍 언어다.
그것의 라이브러리 루틴은 ISO C의 루틴을 반영하지만, 현재의 구현은 C로 작성된 기능으로 쉽게 확장될 수 없다.
참고 항목
참조
- ^ Manfred von Thun (December 12, 2003). "A Conversation with Manfred von Thun". Retrieved May 31, 2013.
In the early 1980s I came across the famous Backus paper "Can programming be liberated from the von Neumann style," and I was immediately intrigued by the higher level of programming in his FP.
- ^ "Mathematical Foundations of Joy". Archived from the original on October 7, 2011.
외부 링크
- 공식 조이 프로그래밍 언어 웹사이트(La Trobe University)
- 조이 홈페이지 거울
- Joy에 관한 정보 모음집
- 즉시 실행 가능한 Joy(GitHub-Archiv)
- Freneger, Paul (August 2003). "The JOY of forth". ACM SIGPLAN Notices. 38 (8).
- von Thun, Manfred; Thomas, Reuben (October 9, 2001). "Joy: Forth's Functional Cousin" (PDF). Proceedings of the 17th EuroForth Conference.
- Christopher Diggins (December 31, 2008). "What is a Concatenative Language". Dr. Dobbs.
- Apter, Stevan. "Functional Programming in Joy and K". Vector. Archived from the original on 2008-08-28. Retrieved 2011-02-28.
- 기계 드로잉을 위한 델파이에서 통역사 mjoy(조이)