선물은 범주 이론으로 어떻게 설명됩니까?


답변:


25

그것이 일어날 때, 나는 지금 이것에 관한 논문을 쓰고 있습니다. 선물이나 약속에 대해 생각하는 좋은 방법 인 IMO는 시간적 논리에 대한 커리 하워드의 대응 측면에서 볼 수 있습니다.

기본적으로 선물의 기본 개념은 진행중인 계산을 나타내며 동기화 할 수있는 계산을 나타내는 데이터 구조라는 것입니다. 시간적 논리의 관점에서, 이것은 결국 연산자 A 입니다. 이것은 모나 딕 구조를 갖습니다 :

return:AAbind:(AB)AB
여기서 return동작 스폰 즉시 인수를 리턴하는 공정, 및 기다리는 새로운 프로세스 생성 ,의 값을 적용 f를 그 값으로하고 기다린다 B에 반환하기 전에 -value한다. CommonJS에 대한 약속 / A 제안은 모나드 바인딩 작업을 호출 하고, 스칼라 2.10은 그것을 표준 모나드 인터페이스를 제공합니다 .bindafBthen

최종 연산자 의 이중 A은 항상 시간 논리의 연산자 A 입니다. 즉, 모든 순간에 를 얻습니다 A. Kripke 시간 논리의 의미론 (확장 성을 모델링하는 곳) 에서 λ 미적분학 (람다 용어 / 증거도 모델링 하는)의 범주 의미론으로 전달하면 실제로 여러 가지 방법이 있습니다.

AAA

가장 자연스러운 (IMO) 할 일은 를 취하는 것인데, 각 순간에 (잠재적으로 다른) 를 얻을 수 있습니다 . 그런 다음, 콤팩트 한 FRP (Functional Reactive Programming) ( Tarmo Uustalu 및 Varmo Vene가 처음 제안한 )를 선물로 이중에서 모나 딕으로 프로그래밍하는 방식으로 볼 수 있습니다.AStreamAA

그러나, 코람 어 -calculus는 우아함에도 불구하고 스트림을 사용하여 명시 적으로 프로그래밍하는 것에 비해 표현력이 심각하게 손실됩니다. 사용하는 무료 대수학의 범주에는 많은 흥미로운 프로그램을 나타내기에는 너무 적은 전역 요소가있는 것으로 밝혀지기 때문에 특히 고정 점.λ

Nick Benton과 저는 우리의 논문 Ultrametric Semantics of Reactive Programs 에서 스트림을 사용하여 명시 적으로 프로그래밍한다고 주장했습니다 . 그 후 Alan Jeffrey는 그의 논문 LTL 유형 FRP 에서 LTL을 유형 시스템으로 사용하도록 제안 했습니다. Wolfgang Jeltsch는 그의 논문 에서 선형 시간 시간 논리 및 기능적 반응성 프로그래밍에 대한 공통 범주 시맨틱을 향한 것으로 관찰했습니다 .

Nick과 내가 취하는 관점과 Alan과 Wolfgang이 취하는 관점의 차이는 Birkedal et al.의 합성 보호 영역 이론첫 번째 단계에서 주어진 구조를 비교함으로써 가장 잘 이해됩니다 (IMO). 앨런의 종이와 나무 . 나무의 지형 (크기별로 정렬 된 자연수보다 미리 깎아 낸 것)은 Nick과 내가 사용한 초음파 공간의 범주와 매우 유사하지만 Alan의 범주와 비교하기가 훨씬 쉽습니다 (이산 범주에 대한 사전 깎기). 카테고리.

동시성에 대한 선물에 특히 관심이 있다면 LTL보다는 CTL 을 보는 것이 좋습니다 . AFAIK, 그것은 현재 탐험되지 않은 영토입니다!

편집 : 여기 에 초안 링크가 있습니다. 이 논문은 대부분 형식화 된 FRP를 구현하는 것에 관한 것이므로 언어는 동기식입니다. 그러나 3.3 절의 선물 / 이벤트에 관한 대부분의 논의는 기본적으로 진정한 동시 언어에도 적용되어야합니다.


1
당신이 그것을 끝내면 그 사본을 얻고 싶습니다.
Dave Clarke

1
이것은 선물의 중요한 특성을 잃어버린 것 같습니다. 일단 가치가 얻어지면 바꿀 수 없습니다. 를 공리로 사용 하여 표현하려고 시도 하지만 가 스트림을 의미하는 경우 이것은 우리가 원하는 것이 아닙니다 ... )AA
Alexey Romanov

최근 스칼라 유형 읽었 Try[T]Future[T]듀얼,하지만 난 꽤 어떤 의미에서 무엇을이 방법을 / 이해하지 않았습니다.
Giorgio
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.