컴파일러가 최적화 단계에서 수행 할 수있는 강력한 작업 중 하나는 비효율적 인 표현을 동등한 것으로 대체하는 것입니다. 예를 들어, Haskell에서는 지연 목록을 사용하여 숫자의 합계를 계산할 수 있지만 GHC Haskell 컴파일러는 이것이 임시 변수에 반복을 사용하는 것과 동일하다는 것을 인식합니다. 그렇게하면 추론하기 쉬운 간단한 추상화에 대해 프로그래밍 할 수 있고, 실행 파일은 하드웨어 플랫폼에 더 적합한 표현을 활용할 수 있습니다 (그리고 규모에 대해서는 추론하기가 훨씬 더 어렵습니다).
그러나 컴파일러에 알려진 동등성은 주로 목록에 대한 스트림 융합과 같이 잘 알려지고 연구 된 데이터 구조로 제한됩니다. 어느 방향 으로든 ID를 구성하는 변환 함수 쌍을 사용하여 소스 코드에서 고유 한 동등성을 정의 할 수 있지만 수동으로 적용해야하며 모든 위치에서 사용할 올바른 유형을 선택하기가 까다로울 수 있습니다. 과도한 전환을 피하기 위해
이제 정식 조회 맵과 같이 "더 높은 유도 유형"을 정의하는 세계를 상상해 봅시다. 이 유형에는 이진 검색, AVL, 빨강-검정, Trie, Patricia 등 다양한 종류의 맵에 대한 여러 생성자가 있습니다. 일반적인 데이터 생성자와 함께 이러한 표현 사이의 다중 변환을 캡처하는 동등성 유형도 정의합니다. 변환은 다양한 차원의 효율성 (즉, 시간 대 메모리)을 제공합니다.
컴파일러가이 개념을 사용하여 오늘날지도 융합과 동일한 방식으로 맵 표현을 투명하게 다시 작성할 수 있다면 어떨까요? 한편, 코드에서 추론하기 가장 간단한 구성으로 작업하게됩니다 (그리고 그러한 환경에 있다면 증명 작업이 더 쉬워집니다). 이것은 여러 구현을 가진 추상 인터페이스처럼 들릴 수 있지만 프로그램의 의미에 영향을 미치지 않고 구현을 선택하고 필요에 따라 컴파일러가 다른 것을 대체 할 수있는 자유를 포함합니다.
HoTT는 동등성 개념을 동등성으로 승격시키기 때문에이 멋진 재 작성 메커니즘과 이러한 풍부하게 정의 된 형식을 정당화 할 수있는 형식 이론적 기초를 제공합니다. 이것이 실제로 실제로 어떻게 진행될지는 여전히 알려야하지만 미래의 작업을 기반으로하는 이론적 틀을 제공합니다.