1
0
mirror of https://github.com/dhil/phd-dissertation synced 2026-03-13 11:08:25 +00:00

Compare commits

..

2 Commits

Author SHA1 Message Date
53a2f691c5 Use 'dump' contexts 2020-11-06 00:55:16 +00:00
a75f22eb50 C and F 2020-11-06 00:17:56 +00:00
2 changed files with 32 additions and 4 deletions

View File

@@ -437,5 +437,7 @@
\newcommand{\fprompt}{\%} \newcommand{\fprompt}{\%}
\newcommand{\splitter}{\keyw{splitter}} \newcommand{\splitter}{\keyw{splitter}}
\newcommand{\J}{\keyw{J}} \newcommand{\J}{\keyw{J}}
\newcommand{\FelleisenC}{\ensuremath{\mathcal{C}}}
\newcommand{\FelleisenF}{\ensuremath{\mathcal{F}}}
\newcommand{\cont}{\keyw{cont}} \newcommand{\cont}{\keyw{cont}}

View File

@@ -659,6 +659,8 @@ callcc, J, catchcont, etc.
\hline \hline
\multicolumn{1}{| l |}{\textbf{Name}} & \multicolumn{1}{l |}{\textbf{Extent}} & \multicolumn{1}{l |}{\textbf{Behaviour}} & \multicolumn{1}{l |}{\textbf{Canonical reference}}\\ \multicolumn{1}{| l |}{\textbf{Name}} & \multicolumn{1}{l |}{\textbf{Extent}} & \multicolumn{1}{l |}{\textbf{Behaviour}} & \multicolumn{1}{l |}{\textbf{Canonical reference}}\\
\hline \hline
\FelleisenC & Undelimited & Abortive & \citet{FelleisenF86} \\
\hline
call/cc & Undelimited & Abortive & \citet{AbelsonHAKBOBPCRFRHSHW85} \\ call/cc & Undelimited & Abortive & \citet{AbelsonHAKBOBPCRFRHSHW85} \\
\hline \hline
call/cc* & Undelimited & Composable & \citet{Flatt20} \\ call/cc* & Undelimited & Composable & \citet{Flatt20} \\
@@ -675,6 +677,8 @@ callcc, J, catchcont, etc.
\hline \hline
escape & Undelimited & Abortive & \citet{Reynolds98a}\\ escape & Undelimited & Abortive & \citet{Reynolds98a}\\
\hline \hline
\FelleisenF & Undelimited & Composable & \citet{FelleisenFDM87}\\
\hline
fcontrol & Delimited & Composable & \citet{Sitaram93} \\ fcontrol & Delimited & Composable & \citet{Sitaram93} \\
\hline \hline
J & Undelimited & Abortive & \citet{Landin98}\\ J & Undelimited & Abortive & \citet{Landin98}\\
@@ -694,10 +698,9 @@ callcc, J, catchcont, etc.
\paragraph{Landin's J operator} \paragraph{Landin's J operator}
% %
\begin{reductions} \begin{reductions}
\slab{Marking} & \EC[(\lambda x.M)~V] &\reducesto& \EC[\lambda^{\EC}.M[V/x]], \text{where $\EC$ contains no other $\lambda$}\\ \slab{Dump} & \EC[(\lambda x.M)~V] &\reducesto& \EC[\mathcal{D}[M[V/x]]]\\
\slab{Return} & \lambda^{\EC}.V &\reducesto& V\\ \slab{Capture} & \EC[\mathcal{D}[\J\,(\lambda x.M)]] &\reducesto& \EC[\mathcal{D}[\cont_{\Record{\EC;\lambda x.M}}]]\\
\slab{Capture} & \lambda^{\EC}.\EC'[\J\,x.M] &\reducesto& \EC'[\cont_{\Record{\EC;x.M}}/k]\\ \slab{Resume} & \EC[\Continue~\cont_{\Record{\EC';\lambda x.M}}~V] &\reducesto& \EC'[(\lambda x.M)~V]
\slab{Resume} & \EC[\Continue~\cont_{\Record{\EC';x.M}}~V] &\reducesto& \EC'[M[V/x]]
\end{reductions} \end{reductions}
% %
@@ -733,6 +736,29 @@ call-with-composable-continuation (MzScheme 360, November 2006).
\slab{Resume} & \Continue~\cont_{\EC}~V &\reducesto& \EC[V] \slab{Resume} & \Continue~\cont_{\EC}~V &\reducesto& \EC[V]
\end{reductions} \end{reductions}
%
\[
1 + \Callcc^\ast\,(\lambda k. k\,(k\,0)) \reducesto 3
\]
%
Contrast this result with
%
\[
1 + \Callcc\,(\lambda k. k\,(k\,0)) \reducesto 1
\]
\paragraph{Felleisen's \FelleisenC{} and \FelleisenF{}}
%
\begin{reductions}
\slab{Capture} & \EC[\FelleisenC\,V] &\reducesto& V~\cont_{\EC}\\
\slab{Resume} & \EC[\Continue~\cont_{\EC'}~V] &\reducesto& \EC[V]
\end{reductions}
%
\begin{reductions}
\slab{Capture} & \EC[\FelleisenF\,V] &\reducesto& V~\cont_{\EC}\\
\slab{Resume} & \Continue~\cont_{\EC}~V &\reducesto& \EC[V]
\end{reductions}
\subsection{Delimited operators} \subsection{Delimited operators}
Delimited control: Control delimiters form the basis for delimited Delimited control: Control delimiters form the basis for delimited
control. \citeauthor{Felleisen88} introduced control delimiters in control. \citeauthor{Felleisen88} introduced control delimiters in