previous up next     contents index
Next: Additional Facilities Up: Programming Constructs Previous: Dynamic Wind

Multiple Return Values

 

MzScheme supports mutliple return values through values, call-with-values, and let-values. Multiple values can also be returned by applying a continuation to multiple arguments.

When multiple values are returned to a single value context, the  exn:application:arity exception is raised.

Examples:

 
   (values 1) ; => 1 
   (values 1 2) ; => exn:application:arity - returned 2 values to single-value context
   (values) ; => exn:application:arity - returned 0 values to single-value context
   (call-with-values 
     (lambda () (values 1 2)) 
     (lambda (x y) y)) ; => 2 
   (let-values ([(x y) (values 1 2)]) y) ; => 2 
   (let-values ([z (values 1 2)]) z) ; => (1 2) 
   (let-values ([z (values 1 2)] 
                [(x y) (apply values z)]) 
     y) ; => 2 
   (let-values ([(x y) (let/cc k (k 3 4))]) y) ; => 4 
   (call-with-values 
     (lambda () (values 'hello 1 2 3 4)) 
     (lambda (s . l) 
       (format " s =  s" s l))) ; => "hello = (1 2 3 4)"



previous up next     contents index
Next: Additional Facilities Up: Programming Constructs Previous: Dynamic Wind

PLT