유형 시스템에 대한 표현 체계가 있습니까?


23

복잡성 이론에 존재하는 광범위한 계층 구조에서 영감을 얻은 이러한 계층 구조가 유형 시스템에도 존재하는지 궁금했습니다. 그러나 지금까지 찾은 두 가지 예는 계층 구조가 아닌 체크리스트 (직교 기능 포함)와 비슷합니다 (연속적으로 점점 더 표현력이 높은 유형 시스템 사용).

내가 찾은 두 가지 예는 Lambda 큐브k- 랭크 다형성 의 개념입니다 . 첫 번째는 세 가지 옵션이있는 검사 목록이고 두 번째는 실제 계층 구조입니다 (k의 특정 값에 대해 k 순위는 일반적이지 않습니다). 내가 아는 다른 모든 유형 시스템 기능은 대부분 직교입니다.

나는 자신의 언어를 디자인하고 있기 때문에이 개념에 관심이 있으며 현재 존재하는 유형 시스템 중에서 어떻게 순위를 매기는 지 매우 궁금합니다 (내 유형 시스템은 내가 아는 한 다소 전통적이지 않습니다).

나는 '표현성'이라는 개념이 약간 모호 할 수 있다는 것을 알고 있는데, 이것이 왜 타입 시스템이 체크리스트처럼 보이는지 설명 할 수 있습니다.


4
나는 더 이론적 인 유형 시스템 사이에서만 단단하고 빠른 표현력 비교를 할 수 있다고 확신합니다. 완전한 프로그래밍 언어를 설계하는 경우 기존 언어 / 형식과 기능별 기능 비교를 수행 할 수 있습니다. 불행히도 많은 기능이 다른 기능으로 인코딩 될 수 있으므로 사소한 작업이 아닙니다. 스칼라 나 하스켈처럼 멋진 타입을 가질 수 있다면 표현력면에서 잘 할 것입니다.
Dave Clarke

3
"프로그래밍 언어를 비교하는 방법"에 대한 블로그 게시물을 작성해야합니다.
Andrej Bauer

@Andrej Bauer : 여기에 이미 제시된 답변과 말에 흥미로운 추가 사항이 될 것입니다. 이미 정의 될 수있는 방법을 '표현'에 대해 아주 조금 배웠어요 - 어쩌면 내가 물었다해야 ... 대신에
알렉스 열 직전

몇 군데에서 2 등급 다형성이 사용 된 것을 확신합니다. 내가 지금 기억하고있는 것은 Lammel, Peyton-Jones, Soil Your Boilerplate, 2003입니다.
Radu GRIGore

2
@Radu GRIGore : 순위 -2 다형성은 형식 인수가 이중 반 변형 위치에 나타날 수 있기 때문에 중요합니다. 이는 일반적인 종류의 이중성 으로 인해 교회 인코딩으로 실존 유형을 모델링 할 수 있습니다 . Rank-3은 다시 보편적 인 정량을 제공하며, 거기에서 번갈아 가며 비교할 때 표현력이 거의 없습니다.
CA McCann

답변:


22

유형 시스템에 대해 원하는 "표현성"에 대한 몇 가지 의미가 있습니다.

  1. F

  2. ABFF

  3. AB

  4. 한 유형 시스템이 다른 유형 시스템보다 강력한 특성을 보장합니까? 예를 들어, 선형 유형 시스템 더 많은 프로그램을 거부 하지만 허용되는 프로그램에 대해 더 강력한 진술을 할 수 있습니다.

불행히도, @cody가 논의했듯이 Barendregt의 람다 큐브를 제외하고 이러한 개념을 분류하거나 공식화하는 작업이 있다고 생각하지 않습니다.


3
"Felleisen의 표현력 논문"에 따르면 프로그래밍 언어의 표현력에 관한 것 입니다.
마틴 버거

예, 정확히 나는 그 답을 분명히했다.
Sam Tobin-Hochstadt

13

귀하의 질문에 대한 만족스러운 답변이 확실하지 않지만 람다 큐브에있는 시스템의 일반화 인 Pure Type Systems를 고려한다면 고전적인 Barendregt 텍스트에서 다소 오래된 개요를 찾을 수 있다면 철저 합니다. ) 그런 다음 계층에 대한 몇 가지 자연스러운 개념이 있습니다.

  1. ΓA t:TΓB t:TΓ,tT:(,,)PTS에는 다른 모든 PTS로부터 형태가 존재한다는 점에서 PTS입니다. 이것은 최종 PTS가 가장 표현적인 시스템 인 유형 시스템의 표현성의 척도로 볼 수 있습니다.

  2. ABAFωECC

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