A Pointless Library Proposal
ashley at semantic.org
Mon Oct 23 22:50:30 EDT 2006
Philippa Cowderoy wrote:
> On Mon, 23 Oct 2006, Samuel Bronson wrote:
>> On 23 Oct 2006 22:05:58 -0400, kahl at cas.mcmaster.ca
>> <kahl at 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.
More information about the Libraries