|
|
@ -125,11 +125,30 @@ |
|
|
|
|
|
|
|
|
%% If the year of submission is not the current year, uncomment this line and |
|
|
%% If the year of submission is not the current year, uncomment this line and |
|
|
%% specify it here: |
|
|
%% specify it here: |
|
|
\submityear{2020} |
|
|
|
|
|
|
|
|
\submityear{2021} |
|
|
|
|
|
|
|
|
%% Specify the abstract here. |
|
|
%% Specify the abstract here. |
|
|
\abstract{% |
|
|
\abstract{% |
|
|
An abstract\dots |
|
|
|
|
|
|
|
|
Virtually every programming language is equipped with some control |
|
|
|
|
|
operator which enables the programmer to manipulate the flow of |
|
|
|
|
|
control. |
|
|
|
|
|
% |
|
|
|
|
|
First-class control operators provide an expressive and efficient |
|
|
|
|
|
means for programmers to implement their own control idioms as |
|
|
|
|
|
shareable libraries. |
|
|
|
|
|
|
|
|
|
|
|
The first strand develops the core calculus of a programming |
|
|
|
|
|
language with a \emph{structural} notion of effects, as opposed to |
|
|
|
|
|
the dominant \emph{nominal} notion of effects. |
|
|
|
|
|
|
|
|
|
|
|
By making critical use of \emph{row polymorphism} to build and track |
|
|
|
|
|
effect signatures. |
|
|
|
|
|
|
|
|
|
|
|
The second strand studies foundational implementation techniques for |
|
|
|
|
|
deep, shallow, and parameterised 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. |
|
|
|