1
0
mirror of https://github.com/dhil/phd-dissertation synced 2026-03-13 11:08:25 +00:00
This commit is contained in:
2020-11-09 00:47:29 +00:00
parent 2800e2bd75
commit 293bdae1d3

View File

@@ -802,14 +802,22 @@ argument $V$ plugged in.
\paragraph{Sussman and Steele's catch}
%
The catch operator was introduced into the programming language Scheme
by \citeauthor{SussmanS75} in 1975 as a mechanism for performing
non-local exits~\cite{SussmanS75}.
The catch operator originated in Lisp as an exception handling
construct. It had a companion throw operation, which would unwind the
evaluation stack until it was caught by an instance of catch. In 1975
\citeauthor{SussmanS75} implemented a more powerful variation of the
catch operator in Scheme~\cite{SussmanS75}. Their catch operator would
disperse of the throw operation and instead provide the programmer
with access to the current continuation. Thus it is same as
\citeauthor{Reynolds98a}' escape operator.
%
\[
M,N ::= \cdots \mid \Catch~k.M
\]
%
Although, their syntax differ, their static and dynamic semantics are
the same.
%
\begin{mathpar}
\inferrule*
{\typ{\Gamma,k : \Cont\,\Record{A;\Zero}}{M : A}}
@@ -825,8 +833,8 @@ non-local exits~\cite{SussmanS75}.
\slab{Resume} & \EC[\Continue~\cont_{\EC'}~V] &\reducesto& \EC'[V]
\end{reductions}
%
As an aside it is worth mentioning that \citet{CartwrightF92} used a
variation of $\Catch$ to show that programs can use control operators
As an aside it is worth to mention that \citet{CartwrightF92} used a
variation of $\Catch$ to show that control operators enable programs
to observe the order of evaluation.
\paragraph{Call-with-current-continuation}