>> If you want to leave the payload unspecified, you should also leave >> the number of unspecified values unspecified. That certainly makes >> sense. > > > 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. We shouldn't mix two different things here. One is the number of return values for expression that - theoretically - shouldn't yield any value but which is already prescribed by history, and the other one is number values in a Just/Left/Right that should be left opaque. PS Is there a real-life bugfree example of a program that would break if forms like `set!' evaluated to no value?