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

multiple values proposal



   From: Norman Adams <norman@parc.xerox.com>
   Date: 	Sun, 17 May 1992 23:34:37 PDT


   Here is the most recent proposal for multiple values that I could find.
   -Norman

   -----------------------------
   %%% 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

I would like this to be amended so that continuations which ignore the
returned value can also receive 0 values.  I am not sure how to word
this.  The advantage of doing this is that if an implementation
returns 0 values for procedures whose values are unspecified in the
standard, the implementation can catch as errors places where 0 values
are being stored.