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

Just add WITH-VALUES and VALUES.



I sounds to me like the WITH-VALUES is the preferred name and the
generator should be the first argument to WITH-VALUES.  So here is my
amended proposal.

------------------------------ WITH-VALUES Proposal.

(values obj ...)                                        essential procedure

Returns 0 or more values to a receiving procedure (See with-values).

        (values)        =>              returns zero (no) values

        (values 1)      =>              returns a single value, 1

        (values 1 'a) 	=>              returns two values, 1 and the symbol a


(with-values generator receiver)      			essential procedure

Returns the result of applying the procedure 'receiver' to the values
produced by calling procedure 'generator' with no arguments.  It is an
error if 'receiver' cannot be applied to the number of values returned
by 'generator' or if 'generator' cannot be called with zero arguments.

        (with-values 
          (lambda ()
            (values 1 2))
	  cons)   	      =>              (1 . 2)

--------------------------------

As for the politics, consider this proposal as the best oportunity for
a compromise.  We ask Kent Dybvig to accept the critical property that
(VALUES E) is always equivalent to E and we ask Guillermo Rozas to
accept no agreement can currently be reached about an arity checking
procedure.  Please do not hold WITH-VALUES and VALUES hostage for they
really do represent existing practice, and many programmers use these
procedures.  The art of politics is compromise.  What say we give it a try?

John

PS.  My preferred name for WITH-VALUES is CPS-CALL, but I would not
let the preferrence stand in the way of a compromise!