이진 함수의 연속 전달 변환


13

β A : = R R A ( R 이 고정 된 곳)에서 f : A B 에서 β f : β A β Bβ로 정의한 연속 통과 변환 (CPS 변환)을 상기하십시오 .AβA:=RRARf:ABβf:βAβB 실제로 η A x : = λ r로 정의 된 단위 η A : A β A연속 모나드 있습니다. 아르 자형

βfκr:=κ(rf).
ηA:AβA 및 곱하기 μ A : β ( β A ) β A로 정의 된 μ A
ηAx:=λr.rx
μA:β(βA)βA
μAKr:=K(λf.fr).

이제 이진 를 어떻게 변환 할 수 있는지 생각해 봅시다 . 즉, 우리는 γ f : β A β B β C를 원합니다 . 하나는 빨리 γ를 내 놓습니다.f:ABCγf:βAβBβC 이것은 프로그래밍 관점에서도 의미가 있습니다.

γfκνr:=κ(λx.β(fx)νr).

여기 내 질문이 있습니다 : 프로그래밍 관점에서 옳게 보이는 사실 외에 에 대한 더 깊은 이유가 있습니까? 예를 들어, γ 가 의미가 있다고 생각하는 범주 이론적 또는 다른 "이론적"이유가 있습니까? 예를 들어, 모나드에서 γ 를 체계적으로 요리 할 수 있습니까?γγγ

-ary 함수 의 CPS 변환에 대한 통찰력을 찾고 있습니다.n


2
Haskell liftM2또는 일반화 이외의 것을 찾고 Applicative있습니까? 연속 적용 구조에서 직접 설명하는 n-ary 버전 (n-ary 다형성 함수에 대해 이야기 할 수있는 언어로)을 파생시킬 수 있습니다.
copumpkin

1
이 일반화를 작성하는 방법을 알고 있는데 왜 그런지 알고 싶습니다. 카테고리 이론가들은 내가 요구하는 것을 이해할 것입니다.
Andrej Bauer

1
ApplicativeliftA2γ

3
네, liftA2제가 제안한 것의 일부였습니다. 에서 "이디엄 괄호"개념 (로 (| f x y z ... |)번역 pure f <*> x <*> y <*> z <*> ...) Applicative은 n-ary 형태의 질문을 얻는 체계적인 방법처럼 보입니다. 나는 CT를 알고 있지만 표준 프로그래밍 용어로 CT에 대해 이야기하는 것이 가장 간단 해 보였습니다. Applicative이전에 오지 않았다면 , 하 제균 <*>함수 를 살펴보고 싶을 수도 있습니다 (하스켈의 설명에 지수도 관련되어 있음). 어쨌든, 나는 당신을위한 대답이 없지만 당신이 얻는 것을 더 잘 이해하려고 노력했습니다 :)
copumpkin

2
Hayo Thielecke의 박사 학위 논문은 CPS의 범주 구조에 있습니다. 아마도 그 대답은 다른 출판물에있을 수도 있습니다. cs.bham.ac.uk/~hxt/research/hayo-thielecke-publications.shtml
Dave Clarke

답변:


7

~~ A * ~~ B |-~~ (A * B)

¬¬A¬¬B¬¬(AB)

κϵ


4

노암의 답변을 강화 :

f:ABCuncurry(f):A×BCTdblstr:TA×TBT(A×B)

TA×TBdblstrT(A×B)uncurry(f)TC

이것을 연속 모나드로 인스턴스화하면 구성을 얻습니다.

n

πnπstrπ:TA1××TAnT(A1××An)nf:A1××AnCγf:TA1××TAnstrπT(A1××An)TfTC

그러나 나는 이것이 실제로 당신이 찾고있는 대답을 줄 것이라고 생각하지 않습니다 ...

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