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

위키백과, 우리 모두의 백과사전.

머큐리
패러다임논리형, 함수형
설계자Zoltán Somogyi
개발자멜버른 대학교
발표일1995년
자료형 체계강적, 정적, 다형적
운영 체제크로스 플랫폼
라이선스컴파일러:GPL, 표준 라이브러리:LGPL
웹사이트http://www.mercurylang.org/
주요 구현체
멜버른 머큐리 컴파일러(Melbourne Mercury Compiler)
영향을 받은 언어
프롤로그, 하스켈

머큐리(Mercury)는 함수·논리형 언어이다. 멜버린 대학교의 컴퓨터 과학부에서 개발하였으며, 1995년도에 처음 공개되었다. 머큐리는 순수 선언형 언어로 프롤로그하스켈의 영향을 받았으며, 구현체인 멜버른 머큐리 컴파일러는 다양한 플랫폼에서 동작할 수 있을 뿐만 아니라 여러 백엔드도 지원한다.

언어적으로 강적·정적·다형적 형 시스템이며, 프롤로그를 기반으로 하고 있으면서 기본 개념을 공유하고 있기 때문에 문법에 있어서 언어 특성에 따른 부분을 제외하고는 많은 부분이 비슷하게 보인다.

문법[편집]

겉으로 보기에는 대체로 비슷해 보인다. 살펴 본다면,

  • 숫자는 프롤로그와 달리 정수와 실수를 구분한다.
  • 문자열은 인용부호("")로 감싸야 한다.
  • 리스트는 빈 리스트 [], 숫자 리스트 [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

외부 링크[편집]