Gelegentlich stoße ich auf die Vorstellung von fortsetzungsbasierten Web-Frameworks für Haskell. Was bedeutet das genau?
Fortsetzungen, wie ich sie kenne, erfreuen sich an Kontrollstrukturen. Ich verstehe nicht, wie sie sich auf Web-Sachen beziehen.
Was genau würden Fortsetzungen geben?
Ein fortsetzungsbasiertes Web-Framework invertiert den Kontrollfluss in einer Web-Anwendung. Anstatt seitenorientiert zu sein, ist es flussorientiert. Das Anzeigen einer Webseite wird genauso behandelt wie das Anzeigen eines modalen Dialogs in einer Desktop-Anwendung. Der Steuerungsfluss (aus Sicht des Benutzers des Frameworks) besteht darin, dass eine imperative Aktion die Anzeige mehrerer Seiten anfordern kann. Die Fortsetzung, auf die verwiesen wird, ist der Rest der Aktion, die der Benutzer gestartet hat.
Das kanonische Fortsetzungs-basierte Web-Framework für Haskell ist das ehrwürdige WASH-System .
Die Idee besteht darin, den Status in der Fortsetzung zu erfassen, wodurch vollständig REST-konforme, zustandslose Web-Apps ermöglicht werden, die in einigen Fällen automatisch aus der nicht fortsetzungsbasierten Version des Programms generiert werden können.
Von "WASH / CGI: Server-seitiges Web Scripting mit Sitzungen und typisierten, kompositorischen Formularen": ( 2001):
Die Hauptidee besteht darin, eine Fortsetzung zu verwenden, um eine Momentaufnahme des Zustands zu machen des Skripts nach dem Senden des Formulars an den Browser. Diese Fortsetzung wird dann auf dem Server gespeichert und das Formular enthält einen Schlüssel für später Abruf der Fortsetzung.
Eine moderne Beschreibung des Ansatzes finden Sie in dem MFlow Monad Reader im Überblick.
Tags und Links haskell continuations