- (let*-values <mv binding spec> <body>)syntax
Syntax: <Mv binding spec> has the form ((<formals> <init>) ...), and <body> is a sequence of zero or more definitions followed by one or more expressions as described in section 4.1.4. In each <formals>, it is an error if any variable appears more than once.
Semantics: The let*-values construct is similar to let-values, but the <init>s are evaluated and bindings created sequentially from left to right, with the region of the bindings of each <formals> including the <init>s to its right as well as <body>. Thus the second <init> is evaluated in an environment in which the first set of bindings is visible and initialized, and so on.
{{ (let ((a 'a) (b 'b) (x 'x) (y 'y))
(let*-values (((a b) (values x y)) ((x y) (values a b))) (list a b x y))) ⟹ (x y x y)}}