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

위키백과, 우리 모두의 백과사전.
이동: 둘러보기, 검색
Mercury
패러다임 논리형, 함수형
발표년도 1995년
설계자 Zoltán Somogyi
개발자 University of Melbourne
자료형 체계 강적, 정적, 다형적
주요 구현체 Melbourne Mercury Compiler
영향을 받은 언어 프롤로그, 하스켈
운영 체제 크로스 플랫폼
라이선스 컴파일러:GPL, 표준 라이브러리:LGPL
웹사이트 http://www.mercurylang.org/

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

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

문법[편집]

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

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

바깥 고리[편집]