
Philippa Cowderoy wrote:
On Mon, 23 Oct 2006, Samuel Bronson wrote:
On 23 Oct 2006 22:05:58 -0400, kahl@cas.mcmaster.ca
wrote: I'd say that ``Void'' is not a desirable candidate since too many people know C, and the C type ``void'' corresponds to ``()'' (or ``IO ()''...) So how come whenever I say that, someone invariably corrects me that C's void type is uninhabited, whereas the () type is inhabited by ()? And that a real void-alike wouldn't have any constructors?
Because C's an impure language - and thus it's possible to do something meaningful without returning a value. Oh, and because they're right.
No, I think Wolfram's correct. In C, void represents a return structure of zero bytes. It therefore has 256^0 = 1 value, just like the "()" type (ignoring bottom). AFAIR C disallows declaring a variable void, though it would be theoretically possible to relax this, and have them allocated as zero bytes. Reading a variable of type "void" would return the "void value" without actually reading from memory (since zero of it is allocated to read from), and assigning to it would do nothing. -- Ashley Yakeley