Version: 4.1.3
8 Multiple Values
(require (planet cce/scheme:2:0/values)) |
This module provides tools for manipulating functions and expressions that produce multiple values.
(values->list expr) |
Produces a list of the values returned by expr.
Examples: |
> (values->list (values 1 2 3)) |
(1 2 3) |
| ||||||||
f : (-> A ... (values B C)) | ||||||||
lst : (listof A) |
Produces a pair of lists of the respective values of f applied to the elements in lst ... sequentially.
Examples: |
> (map2 (lambda (x) (values (+ x 1) (- x 1))) (list 1 2 3)) |
(2 3 4) |
(0 1 2) |
| ||||||||||
n : natural-number/c | ||||||||||
f : (-> A ... (values B_1 ... B_n)) | ||||||||||
lst : (listof A) |
Produces lists of the respective values of f applied to the elements in lst ... sequentially.
Examples: | |||||
| |||||
(2 3 4) | |||||
(1 2 3) | |||||
(0 1 2) |
| ||||||||||||
|
These functions combine the values in the lists lst ... using the multiple-valued function f; foldr/values traverses the lists right to left and foldl/values traverses left to right.
Examples: | |||
| |||
| |||
10 | |||
(5 6 7 8) | |||
| |||
10 | |||
(8 7 6 5) |