1
0
mirror of https://github.com/dhil/phd-dissertation synced 2026-03-13 11:08:25 +00:00

Fix typos in abstract

This commit is contained in:
2021-05-23 17:26:03 +01:00
parent 35af9ba572
commit 7ec90b216d

View File

@@ -158,18 +158,18 @@
idioms as shareable libraries. idioms as shareable libraries.
% %
Effect handlers provide a particularly structured approach to Effect handlers provide a particularly structured approach to
programming with first-class control by separating control reifying programming with first-class control by naming control reifying
operations from their handling. operations and separating from their handling.
This thesis is composed of three strands in which I develop This thesis is composed of three strands of work in which I develop
operational foundations for programming and implementing effect operational foundations for programming and implementing effect
handlers as well as exploring the expressive power of effect handlers as well as exploring the expressive power of effect
handlers. handlers.
The first strand develops a fine-grain call-by-value core calculus The first strand develops a fine-grain call-by-value core calculus
of a statically typed programming language a \emph{structural} of a statically typed programming language with a \emph{structural}
notion of effects, as opposed to the \emph{nominal} notion of notion of effect types, as opposed to the \emph{nominal} notion of
effects that dominants the literature. effect types that dominates the literature.
% %
With the structural approach, effects need not be declared before With the structural approach, effects need not be declared before
use. The usual safety properties of statically typed programming are use. The usual safety properties of statically typed programming are
@@ -196,37 +196,43 @@
techniques that admit a unified basis for implementing deep, techniques that admit a unified basis for implementing deep,
shallow, and parameterised effect handlers in the same environment. shallow, and parameterised effect handlers in the same environment.
% %
The CPS translation is obtained through a series refinements by The CPS translation is obtained through a series of refinements of a
starting from a basic first-order CPS translation for a fine-grain basic first-order CPS translation for a fine-grain call-by-value
call-by-value language into an untyped language. The initial language into an untyped language.
refinement adds support for deep handlers by representing stacks of
continuations and handlers as a curried sequence of arguments.
% %
The resulting translation is not \emph{properly tail-recursive}, Each refinement moves toward a more intensional representation of
meaning some function application terms do not appear in tail continuations eventually arriving at the notion of \emph{generalised
position. To rectify this the CPS translation is refined once more continuation}, which admit simultaneous support for deep, shallow,
to obtain an uncurried representation of stacks of continuations and and parameterised handlers.
handlers. Each refinement moves toward a more intensional %
representation of continuations eventually arriving at the notion of The initial refinement adds support for deep handlers by
\emph{generalised continuation}, which admit simultaneous support representing stacks of continuations and handlers as a curried
for deep, shallow, and parameterised handlers. Finally, the sequence of arguments.
translation is made higher-order in order to contract administrative %
redexes at translation time. The image of the resulting translation is not \emph{properly
tail-recursive}, meaning some function application terms do not
appear in tail position. To rectify this the CPS translation is
refined once more to obtain an uncurried representation of stacks of
continuations and handlers. Finally, the translation is made
higher-order in order to contract administrative redexes at
translation time.
% %
The generalised continuation representation is used to construct an The generalised continuation representation is used to construct an
abstract machine that supports the three kinds of handlers. abstract machine that provide simultaneous support for deep,
shallow, and parameterised effect handlers. kinds of effect
handlers.
The third strand explores the expressiveness of effect The third strand explores the expressiveness of effect
handlers. First, I show that deep, shallow, and parameterised handlers. First, I show that deep, shallow, and parameterised
notions of handlers are interdefinable by way of \emph{typed notions of handlers are interdefinable by way of \emph{typed
macro-expressiveness}, which provides a syntactic notion of macro-expressiveness}, which provides a syntactic notion of
expressiveness that merely affirms existence of encodings between expressiveness that affirms the existence of encodings between
handlers, but it provides no information about the computational handlers, but it provides no information about the computational
content of the encodings. Second, using the semantic notion of content of the encodings. Second, using the semantic notion of
\emph{type-respecting expressiveness} I show that for a class of \emph{type-respecting expressiveness} I show that for a class of
programs a programming language with first-class (e.g. effect programs a programming language with first-class control
handlers) admits asymptotically faster implementations than possible (e.g. effect handlers) admits asymptotically faster implementations
in a language without first-class. than possible in a language without first-class control.
% %
} }