Haskell은 왜 타입 레벨 람다 추상화를 갖지 않습니까?


22

이것에 대한 이론적 이유 (유형 확인이나 형식 유추를 결정할 수 없게 될 것 같은) 또는 실제적인 이유 (너무 제대로 구현하기가 어려운가)가 있습니까?

현재, 우리는로 물건을 포장 할 수 newtype와 같은

newtype Pair a = Pair (a, a)

그리고 Pair :: * -> *

그러나 우리는 같은 것을 할 수 없습니다 λ(a:*). (a,a).

(예를 들어, 스칼라는 언어가있는 언어가 있습니다 .)


4
한 종류의 유형 시스템을 사용하도록 선택하면 모든 것이 일관성이 있어야하기 때문에 다른 종류의 유형 시스템은 제외됩니다. 유형 이론 람다는 범주 이론에서 매우 이상 할 것입니다 ...
tp1

답변:


17

타입 레벨 람다에 의한 타입 추론은 결정하기 어려운 고차 통일을 요구할 것이다. 이것이 그들을 금지시키는 동기입니다. 그러나 다른 결정 불가능한 기능 (GADT에 대한 형식 유추와 같은)에서 발생했듯이 형식 서명을 요구하고 허용 할 수 있습니다. 그것이 누군가에 의해 조사되었는지 확실하지 않습니다.

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