[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: meeting after lisp conference



>> From: jmiller@crl.dec.com
...
>> Great idea.  I've asked for travel permission to attend; I don't
>> anticipate a problem.  What's the agenda?

I would like to discuss the multiple value compromise proposal of
December 4, 1989.  The proposal follows.
John

-----------------------------
%%% Multiple values compromise proposal of December 4, 1989.
%%% This is raw TeX.
\advance\hsize by -5cm
\def\mvcall{call-with-values}
\def\mvcontinue{values}

The editors are directed to add text to R$^5$RS so as to include the
procedures {\tt \mvcontinue{}} and {\tt\mvcall{}} consistent with the
following definitions.  The {\tt \mvcontinue{}} procedure takes any
number of arguments, and simply passes them to its continuation.  The
{\tt\mvcall{}} procedure takes a thunk and a procedure, and calls the
thunk with a continuation that, when passed some values, calls the
procedure that was the second argument to the {\tt\mvcall{}} procedure
with those values as arguments.  Except for continuations created by
the {\tt\mvcall{}} procedure, all continuations take exactly one
value, as now; the effect of passing no value or more than one value
to continuations that were not created by the {\tt\mvcall{}} procedure
is unspecified (as indeed it is unspecified now).
Suggested formal semantics:
$$\hbox{\it \mvcontinue{}} = \lambda\epsilon^*\kappa . \kappa\epsilon^*$$
$$\hbox{\it \mvcall{}} = \hbox{\it twoarg }(\lambda \epsilon_1
\epsilon_2\kappa . \hbox{ \it applicate } \epsilon_1 \langle \rangle
\lambda \epsilon^* . \hbox{ \it applicate } \epsilon_2
\epsilon^* \kappa)$$

\end