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
Als Bonus, wenn ja, gibt es eine raffinierte, generische, kategorientheoretische Methode, wie man sowohl ContT
als auch einen solchen Pfeiltransformer ableitet?
Tags und Links haskell category-theory continuations arrows monad-transformers