|
From: | Hans Aberg |
Subject: | Re: GIT version: values |
Date: | Thu, 27 Jan 2011 14:20:32 +0100 |
On 27 Jan 2011, at 10:00, Andy Wingo wrote:
If you wish to preserve a potentially multiply-valued return, you will need to set up a multiple-value continuation, using `call-with-values'.But this is false.According to the standard, passing an unintended number of values to a continuation is undefined.
Right. Because of this, no extension is reliable - can be changed in the future.
To portably preserve a potentially multiply-valued return, you need call-with-values.You can still implement other paradigms on top of this. If you want toexpress some semantics that is not specified in the report, write a macro that wraps your expressions in call-with-values. This is effectively what we will do for Lua, for example.
Yes, this is what I do, first by a macro, and now, via a new tuple type (right now a smob), a function call.
But tuples might be integrated into Scheme, so that the underlying call-with-values become transparent.
For example, if (lambda x a) would have made the multiple values that x picks up as 'values', then (lambda x x) becomes the identity. Now this syntax is occupied, but it illustrates the idea.
[Prev in Thread] | Current Thread | [Next in Thread] |