릴' 펀 랭스' 거츠
이 글은 ML 계열 함수형 언어 구현의 핵심 구조와 설계 선택을 체계적으로 정리한 기술 개요입니다.
엄격 평가(strict)와 지연 평가(lazy), 커링(curried)과 일반 함수(bland), 부트스트랩(bootstrapped)과 호스트(hosted) 컴파일러 등 다양한 구현 스타일을 비교하며, 각 방식의 내부 동작과 장단점을 설명합니다.
또한, 컴파일러의 주요 단계(렉싱, 파싱, 이름 해석, 타입 추론, 패턴 매칭, 정규화, 최적화, 클로저 변환, 코드 생성, 레지스터 할당, 런타임 시스템)를 상세히 다루고, 각 단계별 구현 난이도와 기술적 특징을 구체적인 예시와 함께 제시합니다.
특히, 타입 추론(Hindley-Milner 알고리즘), 패턴 매칭 컴파일(결정 트리 방식), 클로저 변환(환경 캡처 방식), 코드 생성 대상별 차이 및 가비지 컬렉션 전략 등 실용적이고 핵심적인 기술 요소들을 심도 있게 설명하여, 개발자와 연구자가 함수형 언어 설계 및 구현 시 고려해야 할 중요한 지침을 제공합니다.
이 문서는 작은 함수형 언어 구현에 필요한 기술적 선택과 그에 따른 복잡도, 그리고 실무적 가치를 명확히 이해하는 데 큰 도움이 될 것입니다.
