mirror of
https://github.com/dhil/phd-dissertation
synced 2026-03-13 11:08:25 +00:00
WIP
This commit is contained in:
19
thesis.bib
19
thesis.bib
@@ -2193,6 +2193,25 @@
|
|||||||
year = 2020
|
year = 2020
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@article{FlattDDKMSTZ19,
|
||||||
|
author = {Matthew Flatt and
|
||||||
|
Caner Derici and
|
||||||
|
R. Kent Dybvig and
|
||||||
|
Andrew W. Keep and
|
||||||
|
Gustavo E. Massaccesi and
|
||||||
|
Sarah Spall and
|
||||||
|
Sam Tobin{-}Hochstadt and
|
||||||
|
Jon Zeppieri},
|
||||||
|
title = {Rebuilding racket on chez scheme (experience report)},
|
||||||
|
journal = {Proc. {ACM} Program. Lang.},
|
||||||
|
volume = {3},
|
||||||
|
number = {{ICFP}},
|
||||||
|
pages = {78:1--78:15},
|
||||||
|
year = {2019}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Gauche
|
# Gauche
|
||||||
@misc{Kawai20,
|
@misc{Kawai20,
|
||||||
author = {Shiro Kawai},
|
author = {Shiro Kawai},
|
||||||
|
|||||||
88
thesis.tex
88
thesis.tex
@@ -16133,13 +16133,6 @@ calculus where effects are equipped with equations~\cite{LuksicP20}
|
|||||||
and combine it with techniques for effect-dependent
|
and combine it with techniques for effect-dependent
|
||||||
optimisations~\cite{KammarP12}.
|
optimisations~\cite{KammarP12}.
|
||||||
|
|
||||||
% \begin{itemize}
|
|
||||||
% \item Efficiency of nested handlers.
|
|
||||||
% \item Effect-based optimisations.
|
|
||||||
% \item Equational theories.
|
|
||||||
% % \item Parallel and distributed programming with effect handlers.
|
|
||||||
% \end{itemize}
|
|
||||||
|
|
||||||
\paragraph{Multi handlers} In this dissertation I have solely focused
|
\paragraph{Multi handlers} In this dissertation I have solely focused
|
||||||
on so-called \emph{unary} handlers, which handle a \emph{single}
|
on so-called \emph{unary} handlers, which handle a \emph{single}
|
||||||
effectful computation. A natural generalisation is \emph{n-ary}
|
effectful computation. A natural generalisation is \emph{n-ary}
|
||||||
@@ -16162,15 +16155,82 @@ for multi handlers as any problematic quirks that occur with unary
|
|||||||
handlers only get amplified in the setting of multi handlers.
|
handlers only get amplified in the setting of multi handlers.
|
||||||
|
|
||||||
\section{Canonical implementation strategies for handlers}
|
\section{Canonical implementation strategies for handlers}
|
||||||
|
Chapter~\ref{ch:cps} carries out a comprehensive study of CPS
|
||||||
|
translations for deep, shallow, and parameterised notions of effect
|
||||||
|
handlers.
|
||||||
|
%
|
||||||
|
We arrive at a higher-order CPS translation through step-wise
|
||||||
|
refinement of an initial standard first-order fine-grain call-by-value
|
||||||
|
CPS translation, which we extended to support deep effect
|
||||||
|
handlers. Firstly, we refined the first-order translation by
|
||||||
|
uncurrying it in order to yield a properly tail-recursive
|
||||||
|
translation. Secondly, we adapted it to a higher-order one-pass
|
||||||
|
translation that statically eliminates administrative
|
||||||
|
redexes. Thirdly, we solidify the structure of continuations to arrive
|
||||||
|
at the notion of \emph{generalised continuation}, which provides the
|
||||||
|
basis for implementing shallow and parameterised handlers.
|
||||||
|
%
|
||||||
|
The CPS translations have been proven correct with respect to the
|
||||||
|
contextual small-step semantics of $\HCalc$, $\SCalc$, and $\HPCalc$.
|
||||||
|
|
||||||
|
Generalised continuations are a succinct syntactic framework for
|
||||||
|
modelling low-level stack manipulations. The structure of generalised
|
||||||
|
continuations closely mimics the structure of \citeauthor{HiebDB90}
|
||||||
|
and \citeauthor{BruggemanWD96}'s segmented
|
||||||
|
stacks~\cite{HiebDB90,BruggemanWD96}, which is a state-of-art
|
||||||
|
technique for implementing first-class
|
||||||
|
control~\cite{FlattDDKMSTZ19}. Each generalised continuation frame
|
||||||
|
consists of a pure continuation and a handler definition. The pure
|
||||||
|
continuation represents an execution stack delimited by some
|
||||||
|
handler. Thus chaining together generalised continuation frames yields
|
||||||
|
a sequence of segmented stacks.
|
||||||
|
|
||||||
|
The versatility of generalised continuations is illustrated in
|
||||||
|
Chapter~\ref{ch:abstract-machine}, where we plugged the notion of
|
||||||
|
generalised continuation into \citeauthor{FelleisenF86}'s CEK machine
|
||||||
|
to obtain an adequate execution runtime with simultaneous support for
|
||||||
|
deep, shallow, and parameterised effect
|
||||||
|
handlers~\cite{FelleisenF86}. The resulting abstract machine is proven
|
||||||
|
correct with respect to the reduction semantics of the combined
|
||||||
|
calculus of $\HCalc$, $\SCalc$, and $\HPCalc$. The abstract machine
|
||||||
|
provides a blueprint for both high-level interpreter-based
|
||||||
|
implementations of effect handlers as well as low-level
|
||||||
|
implementations based on stack manipulations. The server-side
|
||||||
|
implementation of effect handlers in the Links programming language is
|
||||||
|
a testimony to the former~\cite{HillerstromL16}, whilst the Multicore
|
||||||
|
OCaml implementation of effect handlers is a testimony to the
|
||||||
|
latter~\cite{SivaramakrishnanDWKJM21}.
|
||||||
|
|
||||||
\subsection{Future work}
|
\subsection{Future work}
|
||||||
\begin{itemize}
|
|
||||||
\item Formally relate the CPS translation and the abstract machine.
|
\paragraph{Functional correspondence} The CPS translations and
|
||||||
\item Type the CPS translation.
|
abstract machine have been developed individually. Although, the
|
||||||
\item Simulate generalised continuations with other programming facilities.
|
abstract machine is presented as an application of generalised
|
||||||
\item Abstracting continuations.
|
continuations in Chapter~\ref{ch:abstract-machine} it did appear
|
||||||
\item Multi-handlers.
|
before the CPS translations. The idea of generalised continuation
|
||||||
\end{itemize}
|
first solidified during the design of higher-order CPS translation for
|
||||||
|
shallow handlers~\cite{HillerstromL18}, where we adapted the
|
||||||
|
continuation structure of our initial abstract machine
|
||||||
|
design~\cite{HillerstromL16}. Thus it seems that there ought to be a
|
||||||
|
formal functional correspondence between higher-order CPS translation
|
||||||
|
and the abstract machine, however, the existence of such a
|
||||||
|
correspondence has yet to be established.
|
||||||
|
|
||||||
|
\paragraph{Abstracting continuations} rapid prototyping
|
||||||
|
|
||||||
|
\paragraph{Generalising generalised continuations} The incarnation of
|
||||||
|
generalised continuations in this dissertation has been engineered for
|
||||||
|
unary handlers. An obvious extension to investigate is support for
|
||||||
|
multi handlers. With multi handlers, handler definitions enter a
|
||||||
|
one-to-many relationship with pure continuations rather than an
|
||||||
|
one-to-one relationship with unary handlers. Thus at minimum the
|
||||||
|
structure of generalised continuation frames needs to be altered such
|
||||||
|
that each handler definition is paired with a list of pure
|
||||||
|
continuations, where each pure continuation represents a distinct
|
||||||
|
computation running under the handler.
|
||||||
|
|
||||||
|
\paragraph{Ad-hoc generalised continuations}
|
||||||
|
Simulate generalised continuations with other programming facilities.
|
||||||
|
|
||||||
\paragraph{Typed CPS for effect handlers} The image of each
|
\paragraph{Typed CPS for effect handlers} The image of each
|
||||||
translation developed in Chapter~\ref{ch:cps} is untyped. Typing the
|
translation developed in Chapter~\ref{ch:cps} is untyped. Typing the
|
||||||
|
|||||||
Reference in New Issue
Block a user