[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Chicken-users] multiple values in chicken
From: |
Tobia Conforto |
Subject: |
Re: [Chicken-users] multiple values in chicken |
Date: |
Fri, 1 Feb 2008 13:44:28 +0100 |
From the other thread
Elf wrote:
John Cowan wrote:
It also occurs to me that rec and let-values and all need not
expand into call-values--that's just the *portable* expansion of
them.
they'll all be call-with-values on the inside, or the equivalent
thereof.
Not necessarily.
I see what John is proposing here, and it makes sense to me.
We could choose values and receive (or let-values) to be the primitive
calls and relegate call-with-values to the role of a somewhat
inefficient wrapper, included for the sake of conformance.
- (values 1 2) could put the two values in registers or stack
locations, without unnecessary consing, taking care to put the first
returned value in the conventional register for single return values;
- (receive (x y) ...) and the equivalent let-values form would just
give names to those conventional registers or stack locations, without
any destructuring;
- other consuming forms could just use the first returned value and
ignore the others, as they currently do;
- (call-with-values) would be a bit more complex, because it would
need to emulate all the calling and consing semantics, but I'd wager
it's doable.
Sorry if I can't be more precise (and clever), but I don't know
Chicken's internals very well (yet)
Making multiple return values as optimized as a single C call seems
doable and very useful to me, even if it means optimizing for
(receive) and (let-values) on the receiving side, instead of (call-
with-values).
What do you think?
Tobia
Re: [Chicken-users] multiple values in chicken, Zbigniew, 2008/02/01
Re: [Chicken-users] multiple values in chicken, F. Wittenberger, 2008/02/01
Re: [Chicken-users] multiple values in chicken, John Cowan, 2008/02/01
Re: [Chicken-users] multiple values in chicken, felix winkelmann, 2008/02/04
Re: [Chicken-users] multiple values in chicken, John Cowan, 2008/02/04
Re: [Chicken-users] multiple values in chicken, felix winkelmann, 2008/02/04