If the values of the Maybe/Either returned by the empty `...-and' or
`...-or' forms are accessed to be processed further, the code is most
likely doing something very wrong.
As is code that relies on the (single) value of `set!` or any other procedure returning a (single) unspecified value, but that's the way Scheme does things.
Zero values actually help here to
catch such logical errors because they will more likely raise an
Returning N values (including 0) to a continuation expecting other-than-N values is an error, so you haven't really gained anything.
Note that there is not *the* unit, but there are *"des"* units.
Several units, some units, more than one unit, ....
If you want to leave the payload unspecified, you should also leave
the number of unspecified values unspecified. That certainly makes
That is what R6RS permits in all such situations, but doing so was not only rejected by all R6RS implementers (except that in Racket "(if #f #f)" in a value context is a syntax error), but by the R7RS committee as well. It's a theoretical nicety that no one actually wants.