클린 (프로그래밍 언어)
패러다임 | 함수형 |
---|---|
설계자 | 네이메헌 라드바우드 대학교의 소프트웨어 기술 연구 그룹 |
발표일 | 1987년 |
최근 버전 | 3.1 |
최근 버전 출시일 | 2022년 1월 5일 |
자료형 체계 | 스트롱, 스태틱, 다이내믹 |
운영 체제 | 크로스 플랫폼 |
라이선스 | Simplified BSD[1] |
파일 확장자 | .icl, .dcl, .abc |
웹사이트 | clean |
영향을 받은 언어 | |
Lean, 미란다, 하스켈 | |
영향을 준 언어 | |
하스켈, Idris[2] |
클린(Clean)은 범용 순수 함수형 프로그래밍 언어이다. 언어의 활동적인 개발 역사 대부분에서 컨커런트 클린(Concurrent Clean)이라는 이름이 사용되었으나 어느 지점에서 이 이름의 사용은 중단되었다. 클린은 1987년 Nijmegen의 Radboud University의 연구원 단체에 의해 개발되었다.[3][4]
기능
[편집]클린이라는 언어는 1987년에 처음 등장했으며 지금도 계속 개발되고 있다.[5] 하스켈과 수많은 속성을 공유하고 있다: 참조 투명성, 리스트 캄프리헨션, 가드(guard), 쓰레기 수집, 고차 함수, 커링, 느긋한 계산법.
윈도우에서는 클린 배포판에 통합 개발 환경(IDE)이 포함되어 있다.
예시
[편집] module hello Start :: {#Char} Start = "Hello, world!"
계승:
module factorial import StdEnv fac 0 = 1 fac n = n * fac (n-1) // find the factorial of 10 Start = fac 10 | module factorial2 import StdEnv fac 0 = 1 fac n = prod [1..n] // The product of the numbers 1 to n // find the factorial of 6 Start = fac 6 |
module fibonacci fib 0 = 0 fib 1 = 1 fib n = fib (n - 2) + fib (n - 1) Start = fib 7
Infix 연산자:
(^) infixr 8 :: Int Int -> Int (^) x 0 = 1 (^) x n = x * x ^ (n-1)
컴파일
[편집]- 소스 파일(.icl)과 정의 파일(.dcl)이 클린의 기초적인 일종인 코어 클린(Core Clean)으로 변환된다.
- 코어 클린은 C와 클린으로 구현된 클린의 플랫폼 독립적 바이트코드(.abc)로 변환된다.
- 바이트코드는 C를 사용하여 오브젝트 코드(.o)로 변환된다.
- 오브젝트 코드는 모듈과 런타임 시스템에서 다른 파일들과 링크되며 클린의 일반적인 실행 파일로 변환된다.
플랫폼
[편집]클린은 마이크로소프트 윈도우, 매킨토시, 솔라리스, 리눅스에서 사용할 수 있다.
하스켈과의 비교
[편집]속도
[편집]2008년 벤치마크에 따르면 클린은 대부분의 경우 하스켈보다 더 빠르다:[6]
언어 | Pri | Sym | Inter | Fib | Match | Ham | Twi | Qns | Kns | Parse | Plog | Qsort | Isort | Msort |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
SAPL Int | 6.1 | 17.6 | 7.8 | 7.3 | 8.5 | 15.7 | 7.9 | 6.5 | 47.1 | 4.4 | 4.0 | 16.4 | 9.4 | 4.4 |
SAPL Bas | 4.3 | 13.2 | 6.0 | 6.5 | 5.9 | 9.8 | 5.6 | 5.1 | 38.3 | 3.8 | 2.6 | 10.1 | 6.7 | 2.6 |
GHC | 2.0 | 1.7 | 8.2 | 4.0 | 4.1 | 8.4 | 6.6 | 3.7 | 17.7 | 2.8 | 0.7 | 4.4 | 2.3 | 3.2 |
GHC -O | 0.9 | 1.5 | 1.8 | 0.2 | 1.0 | 4.0 | 0.1 | 0.4 | 5.7 | 1.9 | 0.4 | 3.2 | 1.9 | 1.0 |
Clean | 0.9 | 0.8 | 0.8 | 0.2 | 1.4 | 2.4 | 2.4 | 0.4 | 3.0 | 4.5 | 0.4 | 1.6 | 1.0 | 0.6 |
커뮤니티
[편집]- IRC 채널: #cleanlang on freenode
각주
[편집]- ↑ “Download Clean”. 《Clean》. 2019년 7월 23일에 확인함.
- ↑ “"Idris - Uniqueness Types"”. 2018년 11월 20일에 확인함.
- ↑ “Radboud University Nijmegen: Department of Software Science: Software”.
- ↑ “FAQ”. 《Clean》. 2021년 11월 26일에 확인함.
- ↑ “FAQ - Clean”.
- ↑ Jansen, Jan Martin; Koopman, Pieter; Plasmeijer, Rinus (2008). “From Interpretation to Compilation” (PDF). 2016년 5월 21일에 확인함.[깨진 링크(과거 내용 찾기)]