Multiple values are an evaluation outcome, never a storable guest value. Every continuation position declares how many values it accepts.
At a glance
LISPEX
(call-with-values (lambda () (floor/ 17 5)) list)Result
OUTPUT
(3 2)Current guarantees
- Single-value contexts require exactly one value and raise E320 for zero or at least two.
- Discard contexts accept any count;
call-with-valuespasses the producer packet as consumer arguments. - The operands of
valuesare themselves single-value contexts evaluated left to right.
Boundaries
- Multiple values are not boxed into a list or vector.
- Using
(values)where one value is required is an error, not an unspecified sentinel.