머큐리 (프로그래밍 언어)

머큐리(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

외부 링크 편집