Tom 언어를 위한 정적 타입 시스템과 추론 알고리즘
Tom은 Java에 패턴 매칭과 연관 리스트 매칭을 추가한 확장 언어이다. 본 논문은 Java의 타입 체계와 호환되는 서브타입을 지원하는 Tom 전용 타입 시스템을 제시하고, 패턴의 정합성을 검사하는 타입‑체크 알고리즘과 변수 타입을 자동으로 추론하는 제약 기반 알고리즘을 설계한다. 제안된 시스템은 형식적 증명을 통해 sound·complete함을 보인다.
저자: Claude Kirchner, Pierre-Etienne Moreau, Claudia Tavares
본 논문은 Java에 패턴 매칭과 연관 리스트 매칭을 추가한 Tom 언어의 정적 타입 시스템을 설계하고, 그 구현을 위한 두 가지 알고리즘을 제시한다. 서론에서는 언어 확장의 일반적 필요성을 언급하고, Tom이 Java와 완전한 호환성을 유지하면서도 새로운 구문(%match, 백쿼트)과 연관 연산자를 제공한다는 점을 강조한다. Tom 프로그램은 Java 코드와 패턴 매칭 규칙(섬)으로 구성된 “섬” 형태의 구조를 갖는다.
제2장에서는 기본 타입 체계와 서브타입을 도입한다. 정렬 집합 S에 부분 순서 <: 를 정의하고, 함수 심볼 f와 리스트 심볼 ℓ에 대해 각각 s₁,…,sₙ→s와 (s₁)∗→s 형태의 서명(signature)을 부여한다. 리스트와 별표 변수(x∗)는 가변 길이 매칭을 지원하기 위해 특별히 다루며, 이를 위해 장식된 정렬 D를 도입한다. D는 정렬과 함수·리스트 심볼을 쌍으로 묶어 ‘s_g’ 형태로 표현하고, ‘?’ 장식은 심볼 정보를 무시하고 정렬만을 고려할 때 사용한다.
타입 검사 규칙은 Figure 1에 제시된 기본 규칙과 Figure 2에 제시된 리스트 전용 규칙으로 구성된다. 기본 규칙은 변수(T‑VAR), 함수 적용(T‑FUN), 패턴 매칭(T‑MATCH), 조건 결합(T‑CONJ), 규칙 전체(T‑RULE) 등을 포함한다. 리스트 전용 규칙은 T‑EMPTY(빈 리스트), T‑ELEMENT(리스트에 원소 삽입), T‑MERGE(두 리스트 연결)이며, 이들 규칙은 장식된 타입을 이용해 리스트의 정렬 일치를 강제한다. 서브타입 규칙(SUB)은 위 규칙이 적용되지 않을 경우에만 사용되며, 정렬 간의 <: 관계를 통해 타입을 상승시킨다.
제3장에서는 타입 추론을 위한 제약 기반 시스템을 소개한다. 타입 변수 α∈V를 도입해 각 변수·리스트·함수에 대해 아직 구체화되지 않은 타입을 표현한다. 추론 규칙은 T‑VAR, T‑SVAR, T‑FUN, CT‑EMPTY, CT‑ELEMENT, CT‑MERGE, CT‑STAR 등으로 구성되며, 각 규칙 적용 시 ‘τ₁ = τ₂’ 혹은 ‘τ₁ <: τ₂’ 형태의 제약을 C에 추가한다. 예시 3.1에서는 복합 패턴 `ℓ(x∗, y, z∗) ≺≺
원본 논문
고화질 논문을 불러오는 중입니다...
댓글 및 학술 토론
Loading comments...
의견 남기기