>From a practical point of view, at the low level the implementation is heavily optimized for functions that return exactly one value. Functions that return a different number of values are slower.
Gustavo On Tue, Jan 6, 2015 at 12:09 AM, Jack Firth <[email protected]> wrote: > Given that racket has multiple return values, what sort of issues would > arise if functions were allowed to return no values at all instead of opting > to return the single value void when they have nothing to return? Is it > purely a backwards compatibility thing, or are there more fundamental > problems with that? > > On Mon, Jan 5, 2015 at 4:46 PM, Hendrik Boom <[email protected]> wrote: >> >> On Mon, Jan 05, 2015 at 05:58:31PM -0500, Sean Kanaley wrote: >> > I see "void" as a tangible value specifying no information, whereas >> > "undefined" is literally no information. So void is more like an empty >> > universe and undefined is no universe at all. >> >> Algol 68 had a void value, called 'empty' in the defining report, but >> it didn't need a name in the language itself, because there were too >> many easy ways of geerating it. >> >> I always considered void to be a type with exactly one value, which >> would need log2(1) bits to reprresent it, i.e., zero. >> >> The report also left a number of things undefined. An early draft of >> the report went on to specify 'undefined' as meaning anything from a >> reasonable continuation of the computation to 'indescribable chaos'. >> >> -- hendrik >> ____________________ >> Racket Users list: >> http://lists.racket-lang.org/users > > > > ____________________ > Racket Users list: > http://lists.racket-lang.org/users > ____________________ Racket Users list: http://lists.racket-lang.org/users

