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

multiple values




    As an implementor, I would like to signal an error whenever someone
    attempts to return (values ...) to a context where multiple values
    aren't expected, or something other than (values ...) to a context
    expecting multiple values.  Requiring "(values e)" to be the same as
    "e" makes it impossible to do this.  As you pointed out in your note,
    this won't affect anyone who doesn't like this behavior, since they
    can always create their own versions of "values" and "with-values"
    that circumvent the error checks.

Why do you consider (values <single expression>) to be returning
multiple values?  It's very clearly returning one.

Your argument seems very similar to trying to distinguish between

(f x)

and

(apply f (list x))

To be consistent, you should want us to categorize procedures
according to whether they can be APPLY'ed (sic), and only allow
APPLY'able (sic) procedures to be APPLY'ed.  Otherwise the
implementation should be allowed to signal an error.