1
0
mirror of https://github.com/dhil/phd-dissertation synced 2026-04-28 23:16:32 +01:00

Compare commits

..

11 Commits

Author SHA1 Message Date
Daniel Hillerström
c2d79e1d06 Fix bibliography: add missing year 2025-12-18 14:08:13 +00:00
Daniel Hillerström
47410e4d14 Fix typo in -ctrl+ rule. The delimiter is part of the reified context. 2025-12-18 14:07:59 +00:00
81a4ecec0b UNIX tutorial 2024 2024-10-11 15:45:34 +02:00
cafa8b1ba2 Merge branch 'master' of github.com:dhil/phd-dissertation 2024-02-26 09:51:21 +01:00
2e61275a5b Fix typo; fix sentence structure.
This commit fixes a typo in the type signature of `init` (thanks to
Ramsay Carslaw for spotting it). This commit also structures the last
sentence of Section 2.7 to read slightly better.
2024-02-26 09:50:56 +01:00
e90ba67a4b Update timeline 2023-09-14 09:22:21 +02:00
6aee80a71b Fix typo 2023-09-14 09:14:29 +02:00
aea67c86b4 Fix typo 2023-04-12 14:55:37 +02:00
Daniel Hillerström
5ede30903f Fix typo 2023-02-14 10:59:29 +01:00
Daniel Hillerström
03b7c5b548 Fix typo. Slightly reword an awkward sentence. 2023-02-10 14:31:37 +01:00
7535fe7ecc Fix typos in handler typing rules in the appendix 2023-01-09 17:00:38 +00:00
4 changed files with 1422 additions and 25 deletions

View File

@@ -116,4 +116,5 @@ I submitted my thesis on May 30, 2021. It was examined on August 13,
2021, where I received pass with minor corrections. The revised thesis
was submitted on December 22, 2021. It was approved on March
14, 2022. The final revision was submitted on March 23, 2022. I
received my PhD award letter on March 24, 2022.
received my PhD award letter on March 24, 2022. My graduation
ceremony took place in McEwan Hall on July 11, 2022.

1393
code/unix-tutorial.links Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -2401,7 +2401,8 @@
author = {Nikolaos S. Papspyrou},
title = {A resumption monad transformer and its applications in the semantics of concurrency},
booktitle = {Proceedings of the 3rd Panhellenic Logic Symposium},
address = {Anogia, Greece}
address = {Anogia, Greece},
year = 2001,
}
@inproceedings{Harrison06,

View File

@@ -167,7 +167,7 @@
%
Effect handlers provide a particularly structured approach to
programming with first-class control by naming control reifying
operations and separating from their handling.
operations and separating them from their handling.
This thesis is composed of three strands of work in which I develop
operational foundations for programming and implementing effect
@@ -5446,7 +5446,7 @@ created by the operating system.
%
\[
\bl
\init : (\Unit \to \alpha \eff \varepsilon) \to \alpha \eff \{\Co;\varepsilon\}\\
\init : (\UnitType \to \UnitType \eff \varepsilon) \to \UnitType \eff \{\Co;\varepsilon\}\\
\init~main \defas
\bl
\Let\;pid \revto \Do\;\UFork~\Unit\;\In\\
@@ -5535,10 +5535,11 @@ $\Fork : \UnitType \opto \Bool$, by $\timesharee$, which handles the
more general operation $\UFork : \UnitType \opto \Int$. In practice,
we may be unable to dispense of the old interface so easily, meaning
we have to retain support for, say, legacy reasons. As we have seen
previously we can an operation in terms of another operation. Thus to
retain support for $\Fork$ we simply have to insert a handler under
$\timesharee$ which interprets $\Fork$ in terms of $\UFork$. The
operation case of this handler would be akin to the following.
previously we can interpret an operation in terms of another
operation. Thus to retain support for $\Fork$ we simply have to insert
a handler under $\timesharee$ which interprets $\Fork$ in terms of
$\UFork$. The operation case of this handler would be akin to the
following.
%
\[
\OpCase{\Fork}{\Unit}{resume} \mapsto
@@ -5552,7 +5553,7 @@ The interpretation of $\Fork$ inspects the process identifier returned
by the $\UFork$ to determine the role of the current process in the
parent-child relationship. If the identifier is nonzero, then the
process is a parent, hence $\Fork$ should return $\True$ to its
caller. Otherwise it should return $\False$. This preserves the
caller, and otherwise it should return $\False$, thus preserving the
functionality of the legacy code.
\section{Related work}
@@ -17244,7 +17245,7 @@ They identify four variations.
delimiter in the reified context, but discards the original
instance, i.e.
\[
\Delim{\EC[\CC~k.M]} \reducesto M[\cont_{\EC}/k]
\Delim{\EC[\CC~k.M]} \reducesto M[\cont_{\Delim{\EC}}/k]
\]
\item[\CCmm] The control reifier reifies the context up to, but not
including, the delimiter and subsequently discards the delimiter, i.e.
@@ -17493,14 +17494,15 @@ by \citeauthor{Landin65}'s J operator John \citeauthor{Reynolds98a}
designed the escape operator~\cite{Reynolds98a}. Influenced by escape,
\citeauthor{SussmanS75} designed, implemented, and standardised the
catch operator in Scheme in 1975. A while thereafter the perhaps most
famous undelimited control operator appeared: callcc. It initially
designed in 1982 and was standardised in 1985 as a core feature of
Scheme. Later another batch of control operators based on callcc
appeared. A common characteristic of the early control operators is
that their capture mechanisms were abortive and their captured
continuations were abortive, save for one, namely,
\citeauthor{Felleisen88}'s F operator. Later a non-abortive and
composable variant of callcc appeared. Moreover, every operator,
famous undelimited control operator appeared: callcc. It was designed
in 1982 and standardised in 1985 as a core feature of
Scheme. Following on from callcc a wide range of different control
operators was designed. A common characteristic of the early control
operators is that their capture mechanisms are abortive and their
captured continuations are abortive, save for one, namely,
\citeauthor{Felleisen88}'s F operator. Though, it is worth remarking
that \citet{FlattYFF07} devised a non-abortive and composable variant
of callcc. Another common characteristic is that every operator,
except for \citeauthor{Landin98}'s J operator, capture the current
continuation.
@@ -17832,7 +17834,7 @@ follows.
\end{reductions}
%
Their capture rules are identical. Both operators abort the current
continuation upon capture. This is what set $\FelleisenF$ apart from
continuation upon capture. This is what sets $\FelleisenF$ apart from
the other composable control operator $\Callcomc$.
%
The resume rules of $\FelleisenC$ and $\FelleisenF$ show the
@@ -19022,7 +19024,7 @@ computation $M$ with handler $H$.
\{\ell_i : A_i \opto B_i\}_i \in \Sigma \\
H = \{\Return\;x \mapsto M\} \uplus \{ \OpCase{\ell_i}{p_i}{k_i} \mapsto N_i \}_i \\
\el}\\\\
\typ{\Gamma, x : A;\Sigma}{M : D}\\\\
\typ{\Gamma, x : C;\Sigma}{M : D}\\\\
[\typ{\Gamma,p_i : A_i, k_i : B_i \to D;\Sigma}{N_i : D}]_i
}
{\typ{\Gamma;\Sigma}{H : C \Harrow D}}
@@ -19210,7 +19212,7 @@ handler definitions are identical, however, their typing differ.
\{\ell_i : A_i \opto B_i\}_i \in \Sigma \\
H = \{\Return\;x \mapsto M\} \uplus \{ \OpCase{\ell_i}{p_i}{k_i} \mapsto N_i \}_i \\
\el}\\\\
\typ{\Gamma, x : A;\Sigma}{M : D}\\\\
\typ{\Gamma, x : C;\Sigma}{M : D}\\\\
[\typ{\Gamma,p_i : A_i, k_i : B_i \to C;\Sigma}{N_i : D}]_i
}
{\typ{\Gamma;\Sigma}{H : C \Harrow D}}
@@ -19735,7 +19737,7 @@ overhead, although, techniques such as just-in-time compilation can be
utilised to reduce this overhead.
Continuation passing style (CPS) is a canonical implementation
strategy for continuations --- the word `continuation' even feature in
strategy for continuations --- the word `continuation' even features in
its name.
%
CPS is a particular idiomatic notation for programs, where every
@@ -19769,9 +19771,9 @@ equations.
However, the first equation is derivable from the second and third
equations. I first learned this from Paul{-}Andr{\'{e}} Melli{\`{e}}s
during Shonan Seminar No.103 \emph{Semantics of Effects, Resources,
and Applications}. I have been unable to find a proof of this fact
in the literature, though, \citeauthor{Mellies14} does have published
paper, which only states the three necessary
and Applications}. I have been unable to find a proof of this fact in
the literature, though, \citeauthor{Mellies14} does have a published
paper, which states only the three necessary
equations~\cite{Mellies14}.
%
Therefore I include a proof of this fact here (thanks to Sam Lindley