10.1 Multiple Values (original) (raw)

10.1 Multiple Values🔗

See Multiple Return Values for general information about multiple result values. In addition to call-with-values (described in this section), the let-values, let*-values,letrec-values, and define-values forms (among others) create continuations that receive multiple values.

Returns the given vs. That is, values returns its provided arguments.

Examples:

> (values 1)
1
> (values 1 2 3)
> (values)

Calls generator, and passes the values thatgenerator produces as arguments to receiver. Thus,call-with-values creates a continuation that accepts any number of values that receiver can accept. Thereceiver procedure is called in tail position with respect to the call-with-values call.

Examples:

> (call-with-values (lambda () (values 1 2)) +)
3
> (call-with-values (lambda () 1) (lambda (x y) (+ x y)))
arity mismatch;
the expected number of arguments does not match the given
number
expected: 2
given: 1