종속 유형은 하위 유형 지정의 모든 기능을 제공합니까?


24

타입과 프로그래밍 언어 는 서브 타이핑에 상당히 중점을두고 있지만, 아시다시피 서브 타이핑은 특히 기본적으로 보이지는 않습니다. 하위 유형 지정은 종속 유형보다 더 많은 것을 제공합니까? 종속 유형 작업은 더 많은 작업이 필요하므로 하위 유형이 실제로 유용한 이유를 이해할 수 있습니다. 그러나 프로그래밍 언어의 기초가 아닌 수학의 기초로 유형 이론에 더 관심이 있습니다. 하위 유형에 많은주의를 기울여야합니까?

답변:


22

서브 타이핑 및 종속 유형은 직교 개념입니다.

Subtyping에는 일반적으로 Subsumption이라는 개념이 장착되어 있으므로 수퍼 타입이 예상되는 곳에 한 가지 유형의 표현이 나타날 수 있습니다.

서브 타이핑은 결정 가능성이 높으며 구현시 관리하기가 더 쉽습니다.

의존적 인 타이핑은 훨씬 더 표현력이 좋습니다. 그러나 그룹을 단일체로 간주하려면 추가 구조를 잊어 버릴 수있는 개념이 필요합니다. Coq를 사용할 때와 같이 종종 이러한 종류의 강압을 처리하기위한 사소한 증거 의무가 생성되므로 실제로 하위 유형 지정은 아무 것도 추가하지 않을 수 있습니다. 더 중요한 것은 그룹에 대해 이야기 할 때 모노 이드 이론을 재사용하는 것과 같이 재사용이 가능하도록 다양한 이론을 함께 포장하는 방법을 갖는 것입니다. Coq의 유형 클래스는 최근 이러한 작업을 수행하기위한 혁신입니다. 모듈은 오래된 접근법입니다.

"subtyping dependent types"에 대한 빠른 구글을한다면 대부분 2000 년경에 의존형에 하위 유형을 추가하는 작업을 발견 할 수 있습니다. 증거 조수.


3
고마워요, 이것은 내가 찾던 것입니다. 나는 cstheory에도 불구하고 다소 잘 수신 된 것으로 보이는 몇 가지 멍청한 질문을했습니다 .SE는 그러한 질문에 대한 올바른 장소가 아닙니다. -5에서 +5의 규모로 앞으로 비슷한 질문을 권장하거나 권장하지 않습니까? 참고로 (Robert Harper를 읽음으로써) 타입 클래스는 모듈의 하위 범주입니다. 맞습니까?
존 살바 티어

3
이 질문은 cstheory.SE에 적합한 것의 경계 오른쪽에 있습니다. 타입 클래스는 실제로 모듈의 하위 범주가 아닙니다. 타입 클래스는 모듈 + 타입 유추 + free_plumbing과 비슷합니다.
Dave Clarke

2
종속 유형을 사용하여 하위 분류를 항상 쉽게 모델링 / 시뮬레이션 할 수 있다고 생각합니다. Haskell에서 HList (결정 가능한 유형 평등을 기반으로 구축 된)는 예를 들어 "Haskell 's Overlooked Object System"과 같이 하위 유형을 제공합니다. 하위 분류의 유일한 어려운 부분은 형식 유추이며, 종속 형식으로 작업하면 어쨌든 90 %를 던졌습니다.
sclv

(의견에서 답변으로 변경됨)
Neel Krishnaswami

Martin-Loef의 유형 이론에 대한 부분 집합 이론은 기본적으로 구조를 잊어 버린 모델을 만드는 데 필요한 것으로 1980 년대로 거슬러 올라갑니다. 나는 이것이 @Neel이 그의 대답에서 얻는 것과 같은 것이라고 생각합니다.
Charles Stewart

22

그러나 프로그래밍 언어의 기초가 아닌 수학의 기초로 유형 이론에 더 관심이 있습니다. 하위 유형에 많은주의를 기울여야합니까?

subtyping이 제공하는 한 가지 추가 사항은 subsumption이 많은 일관성 속성을 보유한다는 것을 의미합니다. 종속 유형 이론은 하위 유형으로 수행 할 수있는 모든 것을 모델링하기 위해 증거 관련성이 없다는 개념도 필요합니다. 예를 들어, 종속 유형 이론에서 종속 레코드를 사용하여 서브 세트를 구성하는 것을 근사 할 수 있습니다.

{엑스에스|;(엑스)} vs. Σ엑스:에스.(엑스)

에스(엑스)엑스:

엑스<:와이엑스:엑스엑스:와이(엑스)(엑스)

그런 다음 종속 유형 이론에 대한 하위 분류를 체계적으로 정교하게 만들 수 있습니다. 종속 형 이론 (이 경우에는 Twelf)에 하위 유형을 추가하는 예는 William Lovas 의 논문을 참조하십시오 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.