프로그래밍 언어의 타입 시스템에 별칭 추론을 맡기지 마세요
Futhark는 배열을 복사하지 않고 갱신하는 기능의 안전성을 보장하려고 소비(consumption)와 별칭(alias)을 타입 검사에서 추적합니다. 이 글은 추상 타입과 고차 함수가 추적 규칙을 복잡하게 만드는 과정을 설명하고, 자기 별칭(self-aliasing) 처리와 매개변수성(parametricity)을 활용하는 설계안을 제시합니다.
Futhark는 배열을 복사하지 않고 갱신하는 기능의 안전성을 보장하려고 소비(consumption)와 별칭(alias)을 타입 검사에서 추적합니다. 이 글은 추상 타입과 고차 함수가 추적 규칙을 복잡하게 만드는 과정을 설명하고, 자기 별칭(self-aliasing) 처리와 매개변수성(parametricity)을 활용하는 설계안을 제시합니다.
불변(immutable)과 가변(mutable) 자료구조가 서로의 서브타입이 될 수 없는 이유를 Liskov 치환 원칙과 암묵적 계약의 관점에서 설명합니다. 단순히 제공 메서드의 개수만 비교하면 놓치기 쉬운 해시 안정성, 타입 클래스(type class), duck typing의 차이까지 다룹니다.