Hello!

The implementation of VM-supported multiple values doesn't play well
with values-as-structs as in `values.c':

  scheme@(guile-user)> ,o interp #t
  scheme@(guile-user)> (use-modules (srfi srfi-11))
  scheme@(guile-user)> (define v (values 0 1 2 3))
  scheme@(guile-user)> (let-values (((a b c d) v)) (list a b c d))
  $1 = (0 1 2 3)

  scheme@(guile-user)> ,o interp #f
  scheme@(guile-user)> (define v (values 0 1 2 3))
  scheme@(guile-user)> (let-values (((a b c d) v)) (list a b c d))
  ERROR: Wrong number of arguments to #<program b7144b70 at <unknown port>:8:0 
(let-values-var let-values-var let-values-var let-values-var)>

... whereas:

  scheme@(guile-user)> (let-values (((a b c d) (values 0 1 2 3))) (list a b c 
d))
  $6 = (0 1 2 3)

works.

OTOH, I suspect that the effect of storing multiple values in a single
variable is not specified anyway. (FWIW, Bigloo discards all values but
the first and Ikarus throws an error.)

Thanks,
Ludo'.



Reply via email to