행 다형성과 서브 타이핑의 주요 차이점은 무엇입니까


20

행 다형성이 서브 타이핑보다 더 나은 접근 방식이라고 자주 들지만, 그것들을 자세히 비교하는 것은 찾기가 어렵습니다. 특히 시스템 사용자의 관점에 관심이 있습니다.

나는 건너 않은 블로그 게시물,하지만 이전보다 더 많은 질문으로 나를 떠난다. 예를 들어, 하위 유형이 지정된 시스템은 한 유형을 할당하고 행 유형이있는 시스템은 다른 유형을 할당한다고 주장합니다. 이는 하위 분류가있는 시스템이 "행 타이핑"유형을 할당하는 경우 부정확하게 의도한다는 것을 의미합니까?

내가 볼 수있는 가장 큰 차이점은 행 타이핑으로 인수 유형을 정렬 할 수 있다는 것입니다 (즉, 인수 a필드 에만 관심이 있지만 인수가 동일한 필드를 필요로 하는 두 개의 인수 함수를 작성하십시오 ) .

답변:


10

Subtyping은 한 유형의 표현이 주어지면 다른 유형도 제공 할 수 있다고 말합니다. 우리는 전자가 후자의 하위 유형이며이 하위 유형 관계는 다른 많은 관계를 유발한다고 말합니다. 기호에서

Γ이자형:에스에스<:Γ이자형:

여기서 중요한 것은 (그리고 그것을 검토 한 이유는) 동일한 표현에 두 가지 유형이 있다는 것입니다. 암시 적 유형 인스턴스화를 사용하는 파라 메트릭 다형성 언어 에서는 다음과 같은 하위 유형 관계가 있습니다 . 모든 유형 T에 대해 . 시스템 F에서와 같이 유형 인스턴스화가 명시 적이면이 하위 유형 관계는 유지되지 않습니다.(α.τ)<:τ[/α]

{1:에이,2:}<:{2:,1:에이}{1:에이,2:}{2:,1:에이}에스에스<:<:에스{1:에이,2:}={2:,1:에이}<:

일반적으로 하위 유형이있는 언어에 대해 이야기 할 때 , 지면 유형, 즉 자유 변수가없는 유형 (물론, 비 지상 유형에 대한 하위 유형 관계를 생성 할 수있는 유형) 에 대한 사소한 하위 유형 관계를 가진 언어를 의미 합니다. 따라서 Roy 's와 같은 행 다형성이있는 시스템은 이러한 의미에서 하위 유형을 지정하는 언어가 아니지만 암시 적으로 인스턴스화 된 파라 메트릭 다형성 언어에서 비롯된 사소한 하위 유형 관계가 있습니다. 반면에 구조적 서브 타이핑은지면 유형에 대한 사소한 서브 타이핑 관계를 명시 적으로 나타냅니다.

()위에서 구조적 서브 타이핑은 행 유형을 의미하지만 그 반대도 마찬가지입니다. 파라 메트릭 다형성은 행 유형 또는 구조적 서브 타이핑에 직교합니다 (어떻게 가질 수도 있고 갖지 않을 수도 있다는 점에서 상호 작용이 있습니다). 구조적 서브 타이핑 + 파라 메트릭 다형성을 갖는 시스템은 후자의 모든 용어가 전자에서 동일한 타입으로 입력 될 수 있다는 의미에서 행 유형 + 파라 메트릭 다형성 (일종의 "레코드 유니온"을 가정)을 가정합니다. 전자는 추가 유형으로도 입력 할 수 있습니다. Brian의 예제를 사용하면 구조적 서브 answer타이핑 및 파라 메트릭 다형성 이 있는 시스템 에서 행 타이핑 버전과 동일한 유형을 가지지 만 서브 타이핑 버전의 유형 도 있습니다 .

ρ{ c : Number }정보 : 하위 유형에서 수퍼 유형으로 이동하면 (유형) 정보가 손실됩니다. 이것은 종종 당신이 원하는 것일 수 있습니다 : 당신이 관심있는 공통 유형이 있고 다른 모든 것은 관련이 없습니다. 내 편견은 가능한 한 많은 유형 정보를 유지하고 명시 적으로 버리는 것입니다. 하위 유형 지정 방식의 단점은 유형이 올바른 프로그램이지만 종종 유형이 정보가없는 "맨 위"유형 (예 : 빈 레코드)으로 푸시 되었기 때문에 증명됩니다. 반복적으로, 파라 메트릭 다형성 (일반적으로)은 유형 정보를 보존하고 부분적으로 입력하면 의도적으로 손실합니다.


자세한 답변 감사합니다! 또 다른 질문 : 구조적 서브 타이핑 + 파라 메트릭 다형성이 행 타이핑 + 파라 메트릭 다형성을 포함한다면 왜 후자를 사용합니까?
Alex R

@AlexR Brian이 블로그 포스트에서 언급했듯이 서브 타이핑은 형식 유추 및 내가 언급 한 인체 공학적 문제와 같은 다른 여러 측면과 매우 밀접하게 상호 작용합니다. 구현 및 언어 복잡성 문제도 있습니다. 공정하게하기 위해 "행 유형"과 서브 타이핑 모두를위한 넓은 설계 공간이 있으므로 "소비자"는 대략적인 진술입니다.
Derek Elkins
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.