Gibt es so etwas wie eine Fortsetzung Pfeil Transformator?

8

Die ContT Monade Transformator hat eine interessante Eigenschaft: Wenn es einen * -> * -Typ wie Set gibt, der gut definierte monadische Operationen hat, aber keine Monad Instanz haben kann, aufgrund einiger Einschränkungen (hier Ord a ), ist es das Es ist möglich, sie in ContT ( ContT r Set ) zu verpacken, um eine Monad-Instanz zu erhalten, und die Abhängigkeiten außerhalb davon zu verschieben, wie wenn wir Set in ContT r Set injizieren. Siehe Erstellen effizienter monad Instanzen auf Set mit der Continuation Monade .

Gibt es etwas Ähnliches für Pfeile? Ein Pfeiltransformer , der das erlauben würde wrap einen "fast arrow" hinein, eine gültige Arrow -Instanz bekommen, und problematische Einschränkungen auf den Teil, wo wir den "fast Pfeil" hinein injizieren ?, verschieben.

Zum Beispiel, wenn wir den Typ AlmostArrow :: * -> * -> * hätten, für den wir die üblichen Operationen Arrow hätten, aber mit Einschränkungen wie

%Vor%

Als Bonus, wenn ja, gibt es eine raffinierte, generische, kategorientheoretische Methode, wie man sowohl ContT als auch einen solchen Pfeiltransformer ableitet?

    
Petr Pudlák 18.03.2017, 10:37
quelle

0 Antworten