Multiple Values and Value Contexts

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-values passes the producer packet as consumer arguments.
  • The operands of values are 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.