[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Storing multiple values in a single variable
From: |
Ludovic Courtès |
Subject: |
Storing multiple values in a single variable |
Date: |
Mon, 16 Mar 2009 23:16:43 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/23.0.90 (gnu/linux) |
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'.
- Storing multiple values in a single variable,
Ludovic Courtès <=