패러다임 | 함수형 |
---|---|
설계자 | 네이메헌 라드바우드 대학교의 소프트웨어 기술 연구 그룹 |
발표일 | 1987년 |
최근 버전 | 3.0 |
최근 버전 출시일 | 2018년 10월 19일 |
자료형 체계 | 스트롱, 스태틱, 다이내믹 |
운영 체제 | 크로스 플랫폼 |
라이선스 | Simplified BSD[1] |
파일 확장자 | .icl, .dcl, .abc |
웹사이트 | clean |
영향을 받은 언어 | |
Lean, 미란다, 하스켈 | |
영향을 준 언어 | |
하스켈, Idris[2] |
클린(Clean)은 범용 순수 함수형 프로그래밍 언어이다. 언어의 활동적인 개발 역사 대부분에서 컨커런트 클린(Concurrent Clean)이라는 이름이 사용되었으나 어느 지점에서 이 이름의 사용은 중단되었다. 클린은 1987년 Nijmegen의 Radboud University의 연구원 단체에 의해 개발되었다.
클린이라는 언어는 1987년에 처음 등장했으며 지금도 계속 개발되고 있다.[3] 하스켈과 수많은 속성을 공유하고 있다: 참조 투명성, 리스트 캄프리헨션, 가드(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)
클린은 마이크로소프트 윈도우, 매킨토시, 솔라리스, 리눅스에서 사용할 수 있다.
2008년 벤치마크에 따르면 클린은 대부분의 경우 하스켈보다 더 빠르다:[4]
언어 | 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 |