guile-devel
[Top][All Lists]
Advanced

[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'.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]