Unspecified result Lassi Kortela (07 Nov 2022 12:01 UTC)
Re: Unspecified result Marc Nieper-Wißkirchen (07 Nov 2022 13:01 UTC)
Re: Unspecified result Lassi Kortela (07 Nov 2022 13:18 UTC)
Re: Unspecified result Marc Nieper-Wißkirchen (07 Nov 2022 13:31 UTC)
Re: Unspecified result Lassi Kortela (07 Nov 2022 13:47 UTC)
Re: Unspecified result Marc Nieper-Wißkirchen (07 Nov 2022 13:56 UTC)
Re: Unspecified result Lassi Kortela (07 Nov 2022 14:14 UTC)
Re: Unspecified result Marc Nieper-Wißkirchen (07 Nov 2022 14:20 UTC)
Re: Unspecified result Lassi Kortela (07 Nov 2022 14:45 UTC)
Re: Unspecified result Marc Nieper-Wißkirchen (07 Nov 2022 14:50 UTC)
Re: Unspecified result John Cowan (07 Nov 2022 14:45 UTC)
Re: Unspecified result Marc Nieper-Wißkirchen (07 Nov 2022 14:53 UTC)

Re: Unspecified result Lassi Kortela 07 Nov 2022 14:44 UTC

> R6RS allows zero or more than one value.

That's good.

> Additions to R[67]RS outside the standard libraries can enforce the
> "unspecified = zero values" convention without problems with backward
> compatibility.

Can, but probably should not since there are so many SRFIs and other
libraries written by dozens of people. Many of whom are out of reach.

A macro would be a smooth way to let individual Scheme implementations
solve this problem for themselves. With enough uptake, perhaps most of
them will converge on a solution one day, which can then be enshrined in
RnRS.

>> If there's a standard expression (unspecified) or (void), it could
>> return zero values in some implementations.

> That would be a good macro for writing code that has to work with
> several implementations and standards; but it shouldn't be in a
> standard itself.

We probably can't excise "unspecified" from RnRS at this point since
there are too many implementations. But kudos to anyone who tries.

> Coercing zero values into some default value is precisely what we
> don't want because it covers bugs.  It's a typing error and the
> implementation should not be silent about it.

Probably not a type error. Values are received into locations, which are
dynamically typed in Scheme. "Wrong number of locations" is different
from "wrong type of value in a location", no?

Intuitively, tuples have a similar nature to multiple values, but tuples
are objects. I'm starting to lean into the view that Lisp-style multiple
values are a mistake.