1
0
mirror of https://github.com/dhil/phd-dissertation synced 2026-03-13 11:08:25 +00:00
This commit is contained in:
2021-01-08 13:08:01 +00:00
parent 427a24e7f8
commit 672d67fc72

View File

@@ -138,13 +138,18 @@
% operator \emph{async-await} lets the programmer run multiple % operator \emph{async-await} lets the programmer run multiple
% distinct continuations asynchronously and await their results. % distinct continuations asynchronously and await their results.
% %
First-class control operators provide an expressive and efficient First-class control operators provide programmers with an expressive
means for programmers to implement their own control idioms as and efficient means for manipulating control through reification of
shareable libraries. the current control state as a first-class object, enabling
programmers to implement their own control idioms as shareable
libraries.
% %
Effect handlers provide a structured interface for programming with Effect handlers provide a particularly structured approach to
first-class control by separating control reifying operations from programming with first-class control by separating control reifying
their handling. operations from their handling.
In this thesis I develop operational foundations for programming and
implementing effect handlers.
The first strand develops the core calculus of a programming The first strand develops the core calculus of a programming
language with a \emph{structural} notion of effects, as opposed to language with a \emph{structural} notion of effects, as opposed to
@@ -153,13 +158,17 @@
By making crucial use of \emph{row polymorphism} to build and track By making crucial use of \emph{row polymorphism} to build and track
effect signatures. effect signatures.
The second strand studies foundational implementation techniques for The second strand studies \emph{continuation passing style} and
deep, shallow, and parameterised effect handlers. \emph{abstract machine semantics}, which are foundational techniques
that admit a unified basis for implementing deep, shallow, and
parameterised effect handlers in the same environment.
%
Starting from a CPS translation basic Eventually leading to the
notion of \emph{generalised continuation}.
The third strand explores the expressive power of effect handlers. The third strand investigates the expressive power of effect
handlers.
In this thesis I develop foundational techniques for programming and %
implementing effect handlers.
} }
%% Now we start with the actual document. %% Now we start with the actual document.
@@ -4257,36 +4266,37 @@ The term `pure' is heavily overloaded in the programming literature.
\label{ch:unary-handlers} \label{ch:unary-handlers}
% %
Programming with effect handlers is a dichotomy of \emph{performing} Programming with effect handlers is a dichotomy of \emph{performing}
and \emph{handling} of effectful operations -- or alternatively a and \emph{handling} of effectful operations --- or alternatively a
dichotomy of \emph{constructing} and \emph{deconstructing} effects. An dichotomy of \emph{constructing} and \emph{deconstructing} effects. An
operation is a constructor of an effect. By itself an operation has no operation is a constructor of an effect. By itself an operation has no
predefined semantics. A handler deconstructs effects by predefined semantics. A handler deconstructs an effect by
pattern-matching on their operations. By matching on a particular pattern-matching on its operations. By matching on a particular
operation, a handler instantiates the said operation with a particular operation, a handler instantiates the operation with a particular
semantics of its own choosing. The key ingredient to make this work in semantics of its own choosing. The key ingredient to make this work in
practice is \emph{delimited control}. Performing an operation reifies practice is \emph{delimited control}. Performing an operation reifies
the remainder of the computation up to the nearest enclosing handler the remainder of the computation up to the nearest enclosing handler
of the said operation as a continuation. The continuation is provided of the operation as a continuation. This continuation is exposed to
to the programmer via the handler, and it may be manipulated like any the programmer via the handler as a first-class value, and thus, it
other first-class value. may be invoked, discarded, or stored for later use at the discretion
of the programmer.
Effect handlers provide a structured interface for programming with Effect handlers provide a structured interface for programming with
delimited continuations. They are structured in the sense that an delimited control that operationally augments exception handlers with
invocation site of an operation is decoupled from the use site of its the ability to resume its operations. Effect handlers structured in
continuation. A continuation is exposed in the corresponding operation the sense that the invocation site of an operation is decoupled from
cases inside the handler of its operation of provenance. the use site of its continuation -- akin to how the throw-site for an
exception is decoupled from its handling site.
I will make a slight change of terminology to disambiguate From here onwards I will make a slight change of terminology to
programmatic continuations, i.e. continuations exposed to the disambiguate programmatic continuations, i.e. continuations exposed to
programmer, from continuations in continuation passing style the programmer, from continuations in continuation passing style
(Chapter~\ref{ch:cps}) and machine continuations (Chapter~\ref{ch:cps}) and continuations in abstract machines
(Chapter~\ref{ch:abstract-machine}). In the remainder of this (Chapter~\ref{ch:abstract-machine}). In the remainder of this
dissertation I refer to programmatic continuations as `resumptions', dissertation I refer to programmatic continuations as `resumptions',
and reserve the term `continuation' for continuations concerning the and reserve the term `continuation' for continuations concerning the
implementation details. implementation details.
% In this chapter we study various flavours of unary effect % In this chapter we study various flavours of unary effect
% handlers~\cite{PlotkinP13}, that is handlers of a single % handlers~\cite{PlotkinP13}, that is handlers of a single
% computation. Concretely, we shall study four variations of effect % computation. Concretely, we shall study four variations of effect