114-define-values.scm (677B)
1 ; define-values: bind multiple top-level names from a values producer. 2 3 (define-values (a b c) (values 1 2 3)) 4 (if (= 6 (+ a b c)) 0 (sys-exit 1)) 5 6 ; Single-name formals work with non-values value-expr. 7 (define-values (x) 42) 8 (if (= 42 x) 0 (sys-exit 2)) 9 10 ; Variadic formal collects all yielded values. 11 (define-values rest (values 10 20 30)) 12 (if (equal? (list 10 20 30) rest) 0 (sys-exit 3)) 13 14 ; Dotted formal: head + tail. 15 (define-values (h . t) (values 1 2 3)) 16 (if (= 1 h) 0 (sys-exit 4)) 17 (if (equal? (list 2 3) t) 0 (sys-exit 5)) 18 19 ; Subsequent define-values reassigns globally. 20 (define-values (a b c) (values 100 200 300)) 21 (if (= 600 (+ a b c)) 0 (sys-exit 6)) 22 23 (sys-exit 0)