Kontynuacja przejścia transformacji funkcji binarnych


13

Przypomnijmy transformację przechodzącą kontynuację (transformacja CPS), która przyjmuje do β A : = R R A (gdzie R jest ustalone) if : A → B do β f : β A → β B zdefiniowane przez βAβA:=RRARf:A→Bβf:βA→βB W rzeczywistości mamymonadę kontynuacyjnąz jednostką η A : A → β A zdefiniowaną przez η A x : = λ r . r

βfκr:=κ(r∘f).
ηA:A→βA i mnożenie μ A : β ( β A ) → β A zdefiniowane przez μ A
ηAx:=λr.rx
μA:β(βA)→βA
μAKr:=K(λf.fr).

Teraz zastanówmy się w jaki sposób możemy przekształcić binarne mapa , czyli chcemy y f : p A → beta B → p C . Szybko pojawia się γf:A→B→Cγf:βA→βB→βC Ma to również sens z punktu widzenia programowania.

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

Oto moje pytanie: czy istnieje głębszy powód , inny niż fakt, że wygląda to właściwie z punktu widzenia programowania? Na przykład, czy istnieje uzasadnienie teoretyczne lub inne „teoretyczne” powody, by sądzić, że γ ma sens? Na przykład, czy możemy ugotować γ z monady w systematyczny sposób?γγγ

Szukam wglądu w transformacje CPS elementowych funkcji.n


2
Szukasz czegoś poza Haskellem liftM2lub uogólnieniami Applicative? Możesz uzyskać n-aryjską wersję tego, co opisujesz (w języku, który pozwala mówić o n-ary funkcjach polimorficznych) bezpośrednio ze struktury aplikacyjnej kontynuacji.
— copumpkin

1
Wiem, jak napisać te uogólnienia, chcę wiedzieć, dlaczego takie są. Teoretycy kategorii zrozumieją, o co proszę.
— Andrej Bauer,

1
ApplicativeliftA2γ

3
Tak, liftA2było częścią tego, co sugerowałem. Pojęcie „idiom nawias” ( (| f x y z ... |)przekłada się na pure f <*> x <*> y <*> z <*> ...) Applicativewydaje się systematycznym sposobem na uzyskanie n-arytycznej formy twojego pytania. Znam CT, ale wydawało się, że najłatwiej jest o tym mówić w standardowych terminach programowania. Jeśli jeszcze tego nie spotkałeś Applicative, możesz przyjrzeć się luźnym funktorom monoidalnym (chociaż wypowiedź Haskella o tym <*>zawiera również wykładnicze). W każdym razie nie mam dla ciebie odpowiedzi, ale starałem się lepiej zrozumieć, o co ci chodzi :)
— copumpkin

2
Praca doktorska Hayo Thielecke dotyczy kategorycznej struktury CPS. Może odpowiedź leży tam lub w innych jego publikacjach. cs.bham.ac.uk/~hxt/research/hayo-thielecke-publications.shtml
— Dave Clarke

Odpowiedzi:


7

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

¬¬A⊗¬¬B⟶¬¬(A⊗B)

κ∧ϵ


4

Zwiększenie odpowiedzi Noama:

f:A→B→Cuncurry(f):A×B→CTdblstr:TA×TB→T(A×B)

TA×TB→dblstrT(A×B)→uncurry(f)TC

Jeśli utworzymy instancję monady kontynuacyjnej, uzyskamy twoją konstrukcję.

n

πnπstrπ:TA1×⋯×TAn→T(A1×⋯×An)nf:A1×⋯×An→Cγf:TA1×⋯×TAn→strπT(A1×⋯×An)→TfTC

Ale nadal nie sądzę, że to naprawdę daje odpowiedź, której szukasz ...

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.