Continuazione di passaggio di stile:cosa si intende per “CPS ing”?
-
04-11-2019 - |
Domanda
Sto leggendo Dijkstra Monadi Gratis per una presentazione sto facendo ed è abbastanza sostanziosa.Una delle cose che tengo acceso è il termine "CPS ing".Ho letto un po ' in continuazione di passaggio di stile (cioè, ho letto attraverso la maggior parte della pagina di Wikipedia e non sentire come una sciocchezza assoluta...) ma io ancora non ho chiaro che cosa la frase "CPS ing" significa.
Essi fare un esempio, che mi duplica qui, dopo il quale verranno presentati i principali pattern vedo:
Piuttosto che essere dato manualmente, ci mostrano che questi predicato trasformatori possono essere automaticamente derivato da CPS ing puramente funzionale definizioni di monadico gli effetti (tipo di risposta
Type
).Per esempio, piuttosto che la definizione diWP_ST
, si può calcolare semplicemente dal CPS ing familiareST
monade (cioè,state -> a * state
), derivantiWP_ST a = ((a * state) -> Type) -> state -> Type
(Per il contesto, questo può essere trovato a pagina 1, primo paragrafo all'inizio della seconda colonna).
Quindi c'è un evidente modello qui:Dato un certo tipo
a1 -> a2 -> ... -> an
siamo in grado di mappa tramite il contraviariant funtore F (a -> b) = (b -> a)
che invertire le frecce, producendo
an -> ... -> a2 -> a1
e poi la sostituzione di tutte le ai
con (ai -> Type)
.
È questa una ragionevole interpretazione del termine "CPS ing"?Inoltre, non mi è chiaro perché questo è utile, c'è qualche motivazione per ciò che si ottiene con l'applicazione di tale trasformazione?
Nessuna soluzione corretta