머큐리 (프로그래밍 언어)
머큐리(Mercury)는 함수·논리형 언어이다. 멜버린 대학교의 컴퓨터 과학부에서 개발하였으며, 1995년도에 처음 공개되었다. 머큐리는 순수 선언형 언어로 프롤로그와 하스켈의 영향을 받았으며, 구현체인 멜버른 머큐리 컴파일러는 다양한 플랫폼에서 동작할 수 있을 뿐만 아니라 여러 백엔드도 지원한다.
패러다임 | 논리형, 함수형 |
---|---|
설계자 | Zoltán Somogyi |
개발자 | 멜버른 대학교 |
발표일 | 1995년 |
자료형 체계 | 강적, 정적, 다형적 |
운영 체제 | 크로스 플랫폼 |
라이선스 | 컴파일러:GPL, 표준 라이브러리:LGPL |
웹사이트 | http://www.mercurylang.org/ |
주요 구현체 | |
멜버른 머큐리 컴파일러(Melbourne Mercury Compiler) | |
영향을 받은 언어 | |
프롤로그, 하스켈 |
언어적으로 강적·정적·다형적 형 시스템이며, 프롤로그를 기반으로 하고 있으면서 기본 개념을 공유하고 있기 때문에 문법에 있어서 언어 특성에 따른 부분을 제외하고는 많은 부분이 비슷하게 보인다.
문법
편집겉으로 보기에는 대체로 비슷해 보인다. 살펴 본다면,
- 숫자는 프롤로그와 달리 정수와 실수를 구분한다.
- 문자열은 인용부호("")로 감싸야 한다.
- 리스트는 빈 리스트 [], 숫자 리스트 [1,2,3], 문자 리스트 [a,b,c] 따위로 사용할 수 있으며, [Head | Tail] 로 쪼개는 것도 그대로 따르고 있다. 리스트의 표현 [1,2,3] = [1|[2|[3|[]]]] = '.'(1,'.'(2,'.'(3, []))).
- 규칙(또는 절)은 Head = Result :- Body 의 구조를 가지며, 명세적인 내용물이 작성되는 바는 그것이 어떻게 선언과 결정이 되었느냐에 따라 조금씩 달라진다.
예제
편집:- module fac.
:- interface.
:- import_module io.
:- pred main(io::di, io::uo) is det.
:- implementation.
:- import_module int.
:- func fac(int) = int.
fac(N) = F :- ( N = 0 -> F = 1
; F = N * fac(N-1)
).
main -->
io.write_string("Hello, factorial!\n"),
io.write_int(fac(10)),
io.nl.
mmc -m fac
같이 보기
편집외부 링크
편집- (영어) 머큐리 공식 웹사이트