Daniel Hillerström 5 years ago
parent
commit
b02743df0f
  1. 19
      thesis.bib
  2. 88
      thesis.tex

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

@ -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.
\item Type the CPS translation.
\item Simulate generalised continuations with other programming facilities.
\item Abstracting continuations.
\item Multi-handlers.
\end{itemize}
\paragraph{Functional correspondence} The CPS translations and
abstract machine have been developed individually. Although, the
abstract machine is presented as an application of generalised
continuations in Chapter~\ref{ch:abstract-machine} it did appear
before the CPS translations. The idea of generalised continuation
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

Loading…
Cancel
Save