27 votes

Pourquoi sont délimitées continuation primitives nommé "shift" et "reset"?

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

21voto

Vasil Remeniuk Points 12487

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

Cité de la 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 de 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 d' reset, définir une marque reset de la pile
  • Lors de l'appel d' 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 une marque reset de la pile et de la copie de la cadres correspondants dans le tas pour le haut de la pile.

Une marque reset est inséré lors de l' kest appelé, parce que capturé continuations sont exécutées dans un vide continuation.

4voto

huitseeker Points 6049

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

La mise en œuvre de la Scala est décrit dans ce 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)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X