Question

je lis Dijkstra monades gratuitement Pour une présentation, je ferai et c'est assez charnu. L'une des choses que je continue de rencontrer est le terme "cps'ing". J'ai lu un peu sur le style de passage à continuation (c'est-à-dire, j'ai lu la plupart de la page Wikipedia et cela ne ressemblait pas à un non-sens absolu ...) Mais je ne suis toujours pas clair quelle est la phrase "CPS 'ing "signifie.

Ils donnent un exemple, que je reproduisrai ici, après quoi je présenterai le modèle principal que je vois:

Plutôt que d'être donné manuellement, nous montrons que ces transformateurs de prédicat peuvent être automatiquement dérivés par les définitions purement fonctionnelles de CPS des effets monadiques (avec type de réponse Type). Par exemple, plutôt que de définir WP_ST, on peut simplement le calculer en cps le familier ST Monad (c'est-à-dire, state -> a * state), dérivant

WP_ST a = ((a * state) -> Type) -> state -> Type

(Pour le contexte, cela peut être trouvé à la page 1, premier paragraphe complet en haut de la deuxième colonne).

Il y a donc un modèle assez évident ici: étant donné un certain type

a1 -> a2 -> ... -> an

Nous pouvons le cartographier via le Functor contraiariant F (a -> b) = (b -> a) qui inverse simplement les flèches, cédant

an -> ... -> a2 -> a1

puis remplacer chacun ai avec (ai -> Type).

Est-ce une interprétation raisonnable du terme «CPS'ing»? De plus, il n'est pas clair pour moi pourquoi cela est utile - y a-t-il une motivation pour ce qui est gagné en appliquant une telle transformation?

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à cs.stackexchange
scroll top