
extending the
grammar of expressions as follows:
\[
\begin{array}{lrcl}
{\it expressions}	& e	& \GoesTo & \ldots \Or \Callcc{e} \Or
\Throw{e_1}{e_2}
\end{array}
\]
The language of type expressions is extended as follows:
\[
\begin{array}{lrcl}
{\it monotypes}	& \tau	& \GoesTo	& \ldots \Or \tau\,\Cont
\end{array}
\]
The typing rules are extended with the following two additional rules:
\[
\begin{inferencerule}{callcc}
\infrule{\Gamma\ts e:\tau\,\Cont\to\tau}{\Gamma\ts \Callcc{e} : \tau}{}
\end{inferencerule}
\begin{inferencerule}{throw}
\infrule{\Gamma\ts e_1:\tau \qquad \Gamma\ts
e_2:\tau\,\Cont}{\Gamma\ts\Throw{e_1}{e_2}:\tau'}{}
\end{inferencerule}
\]

\begin{inferencerule}{seize}
\infrule{k\ts [k/x]e\Rightarrow a}{k\ts \Callcc{e}\Rightarrow k}{}
\end{inferencerule}
\begin{inferencerule}{throw-arg}
\infrule{k[\Throw{\Hole}{e_2}]\ts e_1\Rightarrow a}{k\ts
\Throw{e_1}{e_2}\Rightarrow a}{}
\end{inferencerule}
\begin{inferencerule}{throw-cont}
\infrule{k[\Throw{v_1}{\Hole}]\ts e_2\Rightarrow
a}{k\ts\Throw{v_1}{e_2}\Rightarrow a}{}
\end{inferencerule}
\begin{inferencerule}{jump}
\infrule{\Hole\ts k[v]\Rightarrow a}{k\ts\Throw{v}{k}\Rightarrow a}{}
\end{inferencerule}

  The rules are parametric in
a primitive application operation, $\PrimEval$, governing the application of
those constants in ${\cal C}$ representing the one-argument primitive
operations of the language.\footnote{We restrict attention to one-argument
operations for the sae of simplicity.  Moreover, we assume that all such
operations are total unary functions.} If a constant $c$ is applied to a value
$v$ in context $k$, then $\PrimEval(c,v,k)$ determines the value, if any, of
the application.

\begin{inferencerule}{prim}
\infrule{[]\ts k[v']\Rightarrow a}{k\ts c\,v\Rightarrow a}
{(\PrimEval(c,v,k)=v')}
\end{inferencerule}
\begin{inferencerule}{wrong}
\axiom{k\ts c\,v\Rightarrow\Wrong}
{(\PrimEval(c,v,k)\ {\it undefined})}
\end{inferencerule}

