My PhD dissertation at the University of Edinburgh, Scotland https://www.dhil.net/research/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

288 lines
8.1 KiB

8 years ago
%% 12pt font size, PhD thesis, LFCS, print twosided, new chapters on right page
6 years ago
\documentclass[12pt,phd,lfcs,twoside,openright,logo,leftchapter,normalheadings]{infthesis}
8 years ago
\shieldtype{0}
%% Packages
\usepackage[utf8]{inputenc} % Enable UTF-8 typing
\usepackage[british]{babel} % British English
\usepackage[breaklinks]{hyperref} % Interactive PDF
\usepackage{url}
\usepackage[sort&compress,square,numbers]{natbib} % Bibliography
8 years ago
\usepackage{breakurl}
\usepackage{amsmath} % Mathematics library
\usepackage{amssymb} % Provides math fonts
\usepackage{amsthm} % Provides \newtheorem, \theoremstyle, etc.
\usepackage{mathtools}
\usepackage{pkgs/mathpartir} % Inference rules
\usepackage{stmaryrd} % semantic brackets
\usepackage{array}
\usepackage{float} % Float control
\usepackage{caption,subcaption} % Sub figures support
\usepackage[T1]{fontenc} % Fixes font issues
%\usepackage{lmodern}
\usepackage[activate=true,
final,
tracking=true,
kerning=true,
spacing=true,
factor=1100,
stretch=10,
shrink=10]{microtype}
8 years ago
\usepackage{enumerate} % Customise enumerate-environments
\usepackage{xcolor} % Colours
6 years ago
\usepackage{xspace} % Smart spacing in commands.
8 years ago
\usepackage{tikz}
\usetikzlibrary{fit,calc,trees,positioning,arrows,chains,shapes.geometric,%
decorations.pathreplacing,decorations.pathmorphing,shapes,%
matrix,shapes.symbols,intersections}
6 years ago
\SetProtrusion{encoding={*},family={bch},series={*},size={6,7}}
{1={ ,750},2={ ,500},3={ ,500},4={ ,500},5={ ,500},
6={ ,500},7={ ,600},8={ ,500},9={ ,500},0={ ,500}}
\SetExtraKerning[unit=space]
{encoding={*}, family={bch}, series={*}, size={footnotesize,small,normalsize}}
{\textendash={400,400}, % en-dash, add more space around it
"28={ ,150}, % left bracket, add space from right
"29={150, }, % right bracket, add space from left
\textquotedblleft={ ,150}, % left quotation mark, space from right
\textquotedblright={150, }} % right quotation mark, space from left
6 years ago
%%
%% Load macros.
%%
\input{macros}
6 years ago
8 years ago
%% Information about the title, etc.
% \title{Higher-Order Theories of Handlers for Algebraic Effects}
% \title{Handlers for Algebraic Effects: Applications, Compilation, and Expressiveness}
% \title{Applications, Compilation, and Expressiveness for Effect Handlers}
% \title{Handling Computational Effects}
6 years ago
% \title{Programming Computable Effectful Functions}
% \title{Handling Effectful Computations}
\title{Foundations for Programming and Implementing Effect Handlers}
8 years ago
\author{Daniel Hillerström}
%% If the year of submission is not the current year, uncomment this line and
8 years ago
%% specify it here:
\submityear{2020}
%% Specify the abstract here.
\abstract{%
An abstract\dots
}
%% Now we start with the actual document.
\begin{document}
\raggedbottom
%% First, the preliminary pages
\begin{preliminary}
%% This creates the title page
\maketitle
%% Acknowledgements
\begin{acknowledgements}
List of people to thank
\begin{itemize}
\item Sam Lindley
\item John Longley
\item Christophe Dubach
\item KC Sivaramakrishnan
\item Stephen Dolan
\item Anil Madhavapeddy
\item Gemma Gordon
\item Leo White
\item Andreas Rossberg
\item Robert Atkey
\item Jeremy Yallop
\item Simon Fowler
\item Craig McLaughlin
\item Garrett Morris
\item James McKinna
\item Brian Campbell
\item Paul Piho
\item Amna Shahab
\item Gordon Plotkin
\item Ohad Kammar
\item School of Informatics (funding)
\item Google (Kevin Millikin, Dmitry Stefantsov)
\item Microsoft Research (Daan Leijen)
8 years ago
\end{itemize}
\end{acknowledgements}
%% Next we need to have the declaration.
% \standarddeclaration
\begin{declaration}
I declare that this thesis was composed by myself, that the work
contained herein is my own except where explicitly stated otherwise
in the text, and that this work has not been submitted for any other
degree or professional qualification except as specified.
\end{declaration}
8 years ago
%% Finally, a dedication (this is optional -- uncomment the following line if
%% you want one).
% \dedication{To my mummy.}
\dedication{\emph{To be or to do}}
8 years ago
% \begin{preface}
% A preface will possibly appear here\dots
% \end{preface}
%% Create the table of contents
\setcounter{secnumdepth}{2} % Numbering on sections and subsections
\setcounter{tocdepth}{1} % Show chapters, sections and subsections in TOC
%\singlespace
\tableofcontents
%\doublespace
%% If you want a list of figures or tables, uncomment the appropriate line(s)
% \listoffigures
% \listoftables
\end{preliminary}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Main content %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%% Introduction
%%
\chapter{Introduction}
\label{ch:introduction}
An enthralling introduction\dots
%
Motivation: 1) compiler perspective: unifying control abstraction,
lean runtime, desugaring of async/await, generators/iterators, 2)
giving control to programmers, safer microkernels, everything as a
library.
8 years ago
\section{Thesis outline}
Thesis outline\dots
\section{Typographical conventions}
Explain conventions\dots
\part{Background}
\label{p:background}
6 years ago
\chapter{The state of effectful programming}
\label{ch:related-work}
6 years ago
\section{Type and effect systems}
\section{Monadic programming}
\chapter{Continuations}
\label{ch:continuations}
6 years ago
\section{Zoo of control operators}
Describe how effect handlers fit amongst shift/reset, prompt/control,
callcc, J, catchcont, etc.
6 years ago
\section{Implementation strategies}
\part{Design}
6 years ago
\chapter{A ML-flavoured programming language}
\label{ch:base-language}
In this chapter we introduce a core calculus, $\BCalc$, which we shall
6 years ago
later use as the basis for exploration of design considerations for
effect handlers. This calculus distils the `functional' essence of the
ML-flavoured multi-tier web-programming language
\Links~\cite{CooperLWY06}. As such $\BCalc$ may be regarded as a
faithful model of a prototypical and practical functional programming
language.
6 years ago
\section{Syntax and static semantics}
\section{Type inference}
\section{Dynamic semantics}
6 years ago
\chapter{Unary handlers}
\label{ch:deep-handlers}
6 years ago
\section{Deep handlers}
\subsection{Syntax and static semantics}
\subsection{Effect inference}
6 years ago
\subsection{Dynamic semantics}
6 years ago
\section{Parameterised handlers}
6 years ago
\section{Shallow handlers}
\label{ch:shallow-handlers}
6 years ago
\subsection{Syntax and static semantics}
\subsection{Dynamic semantics}
6 years ago
\chapter{N-ary handlers}
\label{ch:multi-handlers}
% \section{Syntax and Static Semantics}
% \section{Dynamic Semantics}
6 years ago
\section{Unifying deep and shallow handlers}
\part{Implementation}
6 years ago
\chapter{Continuation passing styles}
\chapter{Abstract machine semantics}
\part{Expressiveness}
6 years ago
\chapter{Computability, complexity, and expressivness}
\label{ch:expressiveness}
6 years ago
\section{Notions of expressiveness}
Felleisen's macro-expressiveness, Longley's type-respecting
expressiveness, Kammar's typability-preserving expressiveness.
6 years ago
\section{Interdefinability of deep and shallow Handlers}
\section{Encoding parameterised handlers}
6 years ago
\chapter{The asymptotic power of control}
\label{ch:handlers-efficiency}
Describe the methodology\dots
6 years ago
\section{Generic search}
\section{Calculi}
\subsection{Base calculus}
\subsection{Handler calculus}
6 years ago
\section{A practical model of computation}
\subsection{Syntax}
\subsection{Semantics}
\subsection{Realisability}
6 years ago
\section{Points, predicates, and their models}
\section{Efficient generic search with effect handlers}
\subsection{Space complexity}
6 years ago
\section{Best-case complexity of generic search without control}
\subsection{No shortcuts}
\subsection{No sharing}
6 years ago
\chapter{Robustness of the asymptotic power of control}
\section{Mutable state}
\section{Exception handling}
\section{Effect system}
\part{Conclusions}
\chapter{Conclusions}
8 years ago
\label{ch:conclusions}
Some profound conclusions\dots
\chapter{Future Work}
\label{ch:future-work}
8 years ago
%%
%% Appendices
%%
% \appendix
%% If you want the bibliography single-spaced (which is allowed), uncomment
%% the next line.
%\nocite{*}
\singlespace
%\nocite{*}
8 years ago
%\printbibliography[heading=bibintoc]
\bibliographystyle{plainnat}
8 years ago
\bibliography{\jobname}
%% ... that's all, folks!
\end{document}