mirror of
https://github.com/dhil/phd-dissertation
synced 2026-03-13 02:58:26 +00:00
Update intro-text for Section 7.4
This commit is contained in:
50
thesis.tex
50
thesis.tex
@@ -2495,9 +2495,11 @@ We can determine whether a redex is administrative in the image by
|
||||
determining whether it corresponds to a redex in the preimage. If
|
||||
there is no corresponding redex, then the redex is said to be
|
||||
administrative. We can further classify an administrative redex as to
|
||||
whether it is \emph{static} or \emph{dynamic}. A static administrative
|
||||
redex is a by-product of the translation that does not contribute to
|
||||
the implementation of the dynamic behaviour of the preimage.
|
||||
whether it is \emph{static} or \emph{dynamic}.
|
||||
|
||||
A static administrative redex is a by-product of the translation that
|
||||
does not contribute to the implementation of the dynamic behaviour of
|
||||
the preimage.
|
||||
%
|
||||
The separation between value and computation terms in fine-grain
|
||||
call-by-value makes it evident where static administrative redexes can
|
||||
@@ -2506,8 +2508,8 @@ from the translation where each computation term induces a
|
||||
$\lambda$-abstraction. Each induced $\lambda$-abstraction must
|
||||
necessarily be eliminated by a unary application. These unary
|
||||
applications are administrative; they do not correspond to reductions
|
||||
in the preimage. Instead the applications that do correspond to
|
||||
reductions in the preimage are the binary continuation applications.
|
||||
in the preimage. The applications that do correspond to reductions in
|
||||
the preimage are the binary (continuation) applications.
|
||||
|
||||
A dynamic administrative redex is a genuine implementation detail that
|
||||
supports some part of the dynamic behaviour of the preimage. An
|
||||
@@ -3173,25 +3175,36 @@ If $M \reducesto N$ then $\pcps{M} \reducesto^+ \areducesto^* \pcps{N}$.
|
||||
|
||||
In this section we will continue to build upon the higher-order
|
||||
uncurried CPS translation
|
||||
(Section~\ref{sec:higher-order-uncurried-deep-handlers-cps}). Specifically,
|
||||
we will adapt it to be able to translate shallow effect handlers. The
|
||||
dynamic nature of shallow handlers pose an interesting challenge as
|
||||
shallow resumption invocation discards its handler. Consequently
|
||||
evaluation after resumption may occur under a potentially different
|
||||
handler which is determined dynamically by the context. This means
|
||||
that the CPS translation must be able to update the current
|
||||
continuation pair.
|
||||
\dhil{Fix the text}
|
||||
(Section~\ref{sec:higher-order-uncurried-deep-handlers-cps}) in order
|
||||
to add support for shallow handlers. The dynamic nature of shallow
|
||||
handlers pose an interesting challenge, because unlike deep resumption
|
||||
capture, a shallow resumption capture discards the handler leaving
|
||||
behind a dangling pure continuation. The dangling pure continuation
|
||||
must be `adopted' by whichever handler the resumption invocation occur
|
||||
under. This handler is determined dynamically by the context, meaning
|
||||
the CPS translation must be able to modify continuation pairs.
|
||||
|
||||
In Section~\ref{sec:cps-shallow-flawed} I will discuss an attempt at a
|
||||
`natural' extension of the higher-order uncurried CPS translation for
|
||||
deep handlers, but for various reasons this extension is
|
||||
flawed. However, the insights gained by attempting this extension
|
||||
leads to yet another change of the continuation representation
|
||||
(Section~\ref{sec:generalised-continuations}) resulting in the notion
|
||||
of a \emph{generalised continuation}.
|
||||
%
|
||||
In Section~\ref{sec:cps-gen-conts} we will see how generalised
|
||||
continuations provide a basis for implementing deep and shallow effect
|
||||
handlers simultaneously, solving all of the problems encountered thus
|
||||
far uniformly.
|
||||
|
||||
\subsection{A specious attempt}
|
||||
\label{sec:cps-shallow-flawed}
|
||||
%
|
||||
Initially it is tempting to try to extend the interpretation of the
|
||||
continuation representation in the higher-order uncurried CPS
|
||||
translation for deep handlers to squeeze in shallow handlers. The
|
||||
first obstacle one encounters is how to decouple a pure continuation
|
||||
from its handler such that it can later be `adopted' by another
|
||||
handler.
|
||||
translation for deep handlers to squeeze in shallow handlers. The main
|
||||
obstacle one encounters is how to decouple a pure continuation from
|
||||
its handler such that a it can later be picked up by another handler.
|
||||
|
||||
To fully uninstall a handler, we must uninstall both the pure
|
||||
continuation function corresponding to its return clause and the
|
||||
@@ -3481,6 +3494,7 @@ presentation relatively concise.
|
||||
\dhil{Remark that a `generalised continuation' is a defunctionalised continuation.}
|
||||
|
||||
\subsection{Dynamic terms: the target calculus revisited}
|
||||
\label{sec:target-calculus-revisited}
|
||||
|
||||
\begin{figure}[t]
|
||||
\textbf{Syntax}
|
||||
|
||||
Reference in New Issue
Block a user