유형 이론의 맥락에서 "긍정적 입장"과 "부정적 입장"은 무엇을 의미합니까?
주제에 대한 Bob Harper의 블로그 게시물 에서 내가 이해 한 것은 유형 이론에서 극성과 논리에서 극성 사이에 연결이 있다는 것입니다. 그러나 그 연결이 무엇인지 모르겠습니다.
유형 이론의 맥락에서 "긍정적 입장"과 "부정적 입장"은 무엇을 의미합니까?
주제에 대한 Bob Harper의 블로그 게시물 에서 내가 이해 한 것은 유형 이론에서 극성과 논리에서 극성 사이에 연결이 있다는 것입니다. 그러나 그 연결이 무엇인지 모르겠습니다.
답변:
불행히도 "극성"은 유형 이론에서 다소 과부하 된 개념입니다. "포지티브 위치"및 "네거티브 위치"는 초점 / 편광에 대해 Bob이 이야기하는 것과 다른 극성 개념을 나타냅니다.
귀납적 유형을 정의 할 때는 정의하려는 유형의 작업에 해당하는 일련의 규칙이 제공됩니다. 예를 들어 a Nat는
zero : Natsuc : Nat -> Nat그리고 그 예상 Nat을 반복해서 적용에서 발생 할 수있는 모든 값을 포함 suc다른 Nats와 포함을 zero. 이 유도 구조와 일치하여 우리 Nat는 모든 Nat생성자가 생성 한다는 사실에 따라 작동 하는 재귀 원리를 얻습니다 .
rec : A -> (A -> A) -> Nat -> A
그래서
rec Z S zero = zero
rec Z S (suc n) = S (rec Z S n)
그러나 규칙으로 작성할 수있는 내용에는 몇 가지 제한이 있습니다. 그렇지 않으면 재귀 원리를 정당화 할 수없는 일련의 규칙을 작성할 수 있습니다. D생성자가 하나 인 "유도 형" 을 고려하십시오.
d : (D -> D) -> D여기에 재귀 원리가 없습니다. 그리고 정당한 이유가 있습니다! 우리가 재귀 원리를 가지고 있다면,이를 사용하여 자체 애플리케이션의 버전과 비 종료를 인코딩 할 수 있습니다. 이것은 D유도 형이 반복적으로 생성자를 적용하여 생성 된 유한 구조이기 때문에 "유도"라고 할 수 없습니다!
이를 다루기 위해 우리는 유형 이론에서 귀납적 유형이 재귀하는 방법을 제한합니다. 특히, 우리는 그것들이 "부정적인 장소"에 나타나지 않도록 막습니다. 이것은 당신이 말하는 극성의 개념입니다. 따라서 위치의 극성이 결정됩니다.
그래서 X제 두개의 처음 두과 음극에 긍정적
X
Int -> X
X -> Int
(Unit -> X) -> Int
이 아이디어는 재귀 만 긍정적 인 유도 유형이 공변량 펑터를 발생시키는 범주 이론에 대한 의지로 정당화됩니다. 이것이 어떻게 작동하고 왜 흥미로운 지에 대한 세부 사항.
그의 블로그 포스트에서 Harper는 다른 극성의 의미에 대해 이야기했습니다. 이 극성은 논리의 다양한 결합이 의미를 갖는 방법을 나타냅니다. 특히, 결합을 두 가지 방법으로 분류 할 수 있습니다
프로그래밍 언어 용어에서 이것은 게으른 유형과 엄격한 유형의 차이점을 잘 포착합니다. 엄격한 유형은 해당 값으로 정의됩니다. 게으른 것은 패턴 일치 방법에 의해 정의됩니다. 이를 올바르게 처리하기 위해, 우리는 2 가지 주요 구성, 긍정적 유형을 구축하는 방법 및 부정적인 유형을 분해하는 "척추"로 언어를 정의합니다. 이를 사용하여 엄격한 계산과 지연 계산을 하나의 언어로 통합 할 수 있습니다.
이것을 더 잘 이해하기 위해 Bob Harper 's book 38 장을 참조하십시오 .