mirror of
https://github.com/dhil/phd-dissertation
synced 2026-03-13 02:58:26 +00:00
Continuation introduction rewrite [WIP]
This commit is contained in:
101
thesis.tex
101
thesis.tex
@@ -514,59 +514,68 @@ handlers.
|
|||||||
|
|
||||||
\chapter{Continuations}
|
\chapter{Continuations}
|
||||||
\label{ch:continuations}
|
\label{ch:continuations}
|
||||||
|
|
||||||
|
A continuation represents the remainder of computation at a given
|
||||||
|
point during evaluation. Continuations are one of those canonical
|
||||||
|
ideas, that have been discovered multiple times and whose definition
|
||||||
|
predates their use~\cite{Reynolds93}. The term `continuation' was
|
||||||
|
coined by \citet{StracheyW74}, who used continuations to give a
|
||||||
|
denotational semantics to programming languages with unrestricted
|
||||||
|
jumps~\cite{StracheyW00}.
|
||||||
|
|
||||||
% The significance of continuations in the programming languages
|
% The significance of continuations in the programming languages
|
||||||
% literature is inescapable as continuations have found widespread use .
|
% literature is inescapable as continuations have found widespread use .
|
||||||
%
|
%
|
||||||
|
|
||||||
A continuation is an abstract data structure that captures the
|
% A continuation is an abstract data structure that captures the
|
||||||
remainder of the computation from some given point in the computation.
|
% remainder of the computation from some given point in the computation.
|
||||||
%
|
% %
|
||||||
The exact nature of the data structure and the precise point at which
|
% The exact nature of the data structure and the precise point at which
|
||||||
the remainder of the computation is captured depends largely on the
|
% the remainder of the computation is captured depends largely on the
|
||||||
exact notion of continuation under consideration.
|
% exact notion of continuation under consideration.
|
||||||
%
|
% %
|
||||||
It can be difficult to navigate the existing literature on
|
% It can be difficult to navigate the existing literature on
|
||||||
continuations as sometimes the terminologies for different notions of
|
% continuations as sometimes the terminologies for different notions of
|
||||||
continuations are overloaded or even conflated.
|
% continuations are overloaded or even conflated.
|
||||||
%
|
% %
|
||||||
As there exist several notions of continuations, there exist several
|
% As there exist several notions of continuations, there exist several
|
||||||
mechanisms for programmatic manipulation of continuations. These
|
% mechanisms for programmatic manipulation of continuations. These
|
||||||
mechanisms are known as control operators.
|
% mechanisms are known as control operators.
|
||||||
%
|
% %
|
||||||
A substantial amount of existing literature has been devoted to
|
% A substantial amount of existing literature has been devoted to
|
||||||
understand how to program with individual control operators, and to a
|
% understand how to program with individual control operators, and to a
|
||||||
lesser extent how the various operators compare.
|
% lesser extent how the various operators compare.
|
||||||
|
|
||||||
The purpose of this chapter is to provide a contemporary and
|
% The purpose of this chapter is to provide a contemporary and
|
||||||
unambiguous characterisation of the notions of continuations in
|
% unambiguous characterisation of the notions of continuations in
|
||||||
literature. This characterisation is used to classify and discuss a
|
% literature. This characterisation is used to classify and discuss a
|
||||||
wide range of control operators from the literature.
|
% wide range of control operators from the literature.
|
||||||
|
|
||||||
% Undelimited control: Landin's J~\cite{Landin98}, Reynolds'
|
% % Undelimited control: Landin's J~\cite{Landin98}, Reynolds'
|
||||||
% escape~\cite{Reynolds98a}, Scheme75's catch~\cite{SussmanS75} ---
|
% % escape~\cite{Reynolds98a}, Scheme75's catch~\cite{SussmanS75} ---
|
||||||
% which was based the less expressive MacLisp catch~\cite{Moon74},
|
% % which was based the less expressive MacLisp catch~\cite{Moon74},
|
||||||
% callcc is a procedural variation of catch. It was invented in
|
% % callcc is a procedural variation of catch. It was invented in
|
||||||
% 1982~\cite{AbelsonHAKBOBPCRFRHSHW85}.
|
% % 1982~\cite{AbelsonHAKBOBPCRFRHSHW85}.
|
||||||
|
|
||||||
A full formal comparison of the control operators is out of scope of
|
% A full formal comparison of the control operators is out of scope of
|
||||||
this chapter. The literature contains comparisons of various control
|
% this chapter. The literature contains comparisons of various control
|
||||||
operators along various dimensions, e.g.
|
% operators along various dimensions, e.g.
|
||||||
%
|
% %
|
||||||
\citet{Thielecke02} studies a handful of operators via double
|
% \citet{Thielecke02} studies a handful of operators via double
|
||||||
barrelled continuation passing style. \citet{ForsterKLP19} compare the
|
% barrelled continuation passing style. \citet{ForsterKLP19} compare the
|
||||||
relative expressiveness of untyped and simply-typed variations of
|
% relative expressiveness of untyped and simply-typed variations of
|
||||||
effect handlers, shift/reset, and monadic reflection by means of
|
% effect handlers, shift/reset, and monadic reflection by means of
|
||||||
whether they are macro-expressible. Their work demonstrates that in an
|
% whether they are macro-expressible. Their work demonstrates that in an
|
||||||
untyped setting each operator is macro-expressible, but in most cases
|
% untyped setting each operator is macro-expressible, but in most cases
|
||||||
the macro-translations do not preserve typeability, for instance the
|
% the macro-translations do not preserve typeability, for instance the
|
||||||
simple type structure is insufficient to type the image of
|
% simple type structure is insufficient to type the image of
|
||||||
macro-translation between effect handlers and shift/reset.
|
% macro-translation between effect handlers and shift/reset.
|
||||||
%
|
% %
|
||||||
However, \citet{PirogPS19} show that with a polymorphic type system
|
% However, \citet{PirogPS19} show that with a polymorphic type system
|
||||||
the translation preserve typeability.
|
% the translation preserve typeability.
|
||||||
%
|
% %
|
||||||
\citet{Shan04} shows that dynamic delimited control and static
|
% \citet{Shan04} shows that dynamic delimited control and static
|
||||||
delimited control is macro-expressible in an untyped setting.
|
% delimited control is macro-expressible in an untyped setting.
|
||||||
|
|
||||||
\section{Classifying continuations}
|
\section{Classifying continuations}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user