Question

Je crois que je comprends (en général) ce qui shift et reset veux dire.Cependant, je ne comprends pas pourquoi ils sont nommés ainsi ?Ce n' shift et reset Délimité Continuation primitives ont à voir avec la "maj" et "reset" des mots en anglais?

Était-ce utile?

La solution

Ils sont appelés ainsi en raison de la façon dont ils sont mis en œuvre (en général).

Cité de Mise en Œuvre directe de Changement et de Réinitialisation dans le MinCaml Compilateur

Par l'interprétation d'un programme à l'aide de la la poursuite de la sémantique, on peut considérer l'état du programme la poursuite de la pile.Ensuite, reset peut être considéré comme marquant la poursuite pile, et shift la capture de l' la poursuite de la pile jusqu'à la plus proche marque créée par reset.Ici, c'est le vue d'ensemble de la mise en œuvre:

  • Lors de l'appel reset, définir un marque reset pour la pile
  • Lors de l'appel shift (fun k -> M), déplacer une partie de la pile d'images le plus proche de réinitialisation de la marque sur le segment
  • Lors de l'appel d'une poursuite k, définir un marque reset pour la pile, et la copie de la cadres correspondants dans le tas pour le haut de la pile.

Une marque reset est inséré lorsque k est appelé, parce que capturé continuations sont exécutées dans un vide continuation.

Autres conseils

Parce que Danvy & Filinski appelé ces deux opérateurs le premier document où ils ont exposé que le modèle de la continuation, passant du style (voir aussi ici), et c'est ce que Scala met en œuvre.

La mise en œuvre de la Scala est décrit dans cet autre papier.Le renvoi à Danvy & Filinski est clair:

Dans ce papier, nous étudions l'ajout d'opérateurs de contrôle des maj et de réinitialiser les paramètres de ce langage, qui, ensemble, de mettre en œuvre statique délimité par des continuations (Danvy et Filinski 1990, 1992)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top