[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: question about values
From: |
Massimiliano Gubinelli |
Subject: |
Re: question about values |
Date: |
Wed, 18 Mar 2020 10:55:32 +0100 |
Thanks Taylan,
> On 18. Mar 2020, at 07:12, Taylan Kammer <address@hidden> wrote:
>
> On 18.03.2020 00:50, Massimiliano Gubinelli wrote:
>> (let ((a (values "a" "b" "c"))) a)
>
> The result of (values x y z) is not a kind of object that contains three
> values (like a list or vector). It's three separate values that would need
> to be put into three separate variables. But you're only naming one variable
> (a). So strictly speaking the code is "wrong".
>
> In Guile 1.8, multiple values were actually put into some special kind of
> object (which was not very efficient) so code like that still somehow worked
> even thought it's technically wrong.
>
> Starting from Guile 2.0, providing multiple values in a context where only
> one is expected causes the extra values to be ignored.
>
>
I understand the point but then it comes to the problem how to handle this in
macros. For example if bar is a proceduce which returns multiple values and I
have a macro "my-macro" which wraps the call with some initialization and
finalization code and I write
(my-macro (bar))
how to write this macro without knowing if bar is returning multiple values or
not? For example I would like the code above to expand into
(begin
(initialization-code)
(let ((ret (bar)))
(finalization-code)
ret))
But this does not work as shown by the example above. How to implement this
macro correctly?
best
Max
> Happy to answer further questions about this. Multiple-values can be a
> tricky concept to grasp because most other programming languages don't have
> it.
>
> - Taylan
- question about values, Massimiliano Gubinelli, 2020/03/17
- Re: question about values, Taylan Kammer, 2020/03/18
- Re: question about values,
Massimiliano Gubinelli <=
- Re: question about values, Massimiliano Gubinelli, 2020/03/18
- Re: question about values, Matt Wette, 2020/03/18
- Re: question about values, Massimiliano Gubinelli, 2020/03/18
- Re: question about values, John Cowan, 2020/03/18
- Re: question about values, Massimiliano Gubinelli, 2020/03/18
- Re: question about values, Massimiliano Gubinelli, 2020/03/18
- Re: question about values, tomas, 2020/03/18
- Re: question about values, Massimiliano Gubinelli, 2020/03/18