2014-12-29 16 views
8

Od czasu do czasu napotykam na koncepcję kontynuacyjnych frameworków sieciowych dla Haskella. Co to dokładnie oznacza?Co to jest framework sieciowy kontynuujący Haskell?

Kontynuacje, jakie znam, to chwalebne struktury kontrolne. Nie widzę, jak odnoszą się do rzeczy internetowych.

Co dokładnie byłoby przy użyciu kontynuacji?

Odpowiedz

5

Oparte na kontynuacji środowisko sieciowe odwraca przepływ kontroli w aplikacji internetowej. Zamiast być zorientowanym na stronę, jest zorientowany na przepływ. Wyświetlanie strony internetowej jest traktowane tak samo, jak wyświetlanie modalnego okna dialogowego w aplikacji komputerowej. Przepływ kontroli (z perspektywy użytkownika frameworka) polega na tym, że jedna imperatywna akcja może żądać wyświetlenia wielu stron. Kontynuacją, o której mowa, jest reszta akcji, którą rozpoczął użytkownik.

+0

W jaki sposób "Kontynuacja, o której mowa, to pozostała część czynności, którą rozpoczął użytkownik". ma sens, gdy http jest bezpaństwowcem. Ponadto nie rozumiem, co masz na myśli przez "jedna imperatywna akcja może żądać wyświetlenia wielu stron". – user782220

+0

HTTP nie był bezpaństwowcem od czasu wynalezienia ciasteczek. – Carl

+0

Tak więc sens kontynuacji nie oznacza, że ​​niektóre wartości lambda reprezentujące zawieszone obliczenia są zapisywane w pamięci do następnej odpowiedniej czynności. W jakiś sposób plik cookie jest używany do budowania czegoś reprezentującego miejsce zakończenia ostatniego żądania? – user782220

4

Podstawą sieci opartej na kontynuacji kanonicznej dla Haskella jest venerable WASH system.

Chodzi o to, aby uchwycić stan w kontynuacji, umożliwiając w pełni RESTful, bezpaństwowe aplikacje internetowe, które w niektórych przypadkach mogą być generowane automatycznie z nie-kontynuacyjnej wersji programu.

Od "WASH/CGI: Server-side Web Scripting with Sessions and Typed, Compositional Forms": (2001):

Głównym pomysłem jest użycie kontynuację wziąć migawkę stanu skryptu po wysłaniu formularza do przeglądarki. Ta kontynuacja jest następnie przechowywana na serwerze, a formularz zawiera klucz do późniejszego odtworzenia kontynuacji.

Nowoczesny opis podejścia znajduje się w przeglądzie the MFlow Monad Reader.