1 matches bool, 2 matches long
Diggory
diggsey at googlemail.com
Mon Apr 29 02:49:58 PDT 2013
On Monday, 29 April 2013 at 06:26:44 UTC, Walter Bright wrote:
> On 4/28/2013 2:05 AM, deadalnix wrote:
>> On Saturday, 27 April 2013 at 21:52:30 UTC, Walter Bright
>> wrote:
>>> On 4/27/2013 2:29 PM, Rob T wrote:
>>>> If bools are 1 bit ints, then why do we have 'true' and
>>>> 'false' as keywords?
>>>
>>> Because writing cast(bool)0 and cast(bool)1 is unappealing.
>>
>> VRP say you don't need to.
>
> You're implying there is no need for 1L or 1U either, but there
> is.
>
> The other reason, mentioned before, is that without making them
> a keyword or standard type, people will inevitably create their
> own in one of many different, incompatible, ways.
The same could be said of booleans. If D does not have a proper
logical boolean type rather than a "bit" then people will simply
write their own (conflicting and likely inefficient) boolean
types which work the way they expect.
I've actually used a language where boolean is effectively a
1-bit integer, and I can safely say that I have never found a
single advantage over a language with more strongly type booleans
which can implicitly be cast to int, but not the other way
around. On the other hand the disadvantages are quite extensive:
confusion for anyone who has ever used any other high level
language, confusing overload resolution as shown in this thread,
special cases (booleans convert by comparison rather than
truncation, obviously truncation would be stupid but I think this
is more of a reason to ditch integer booleans rather than to
introduce a special case), different meaning (an integer is a
number, a boolean is more like a yes/no enum and that is how it
will be used in almost all code regardless of how it is defined
in the language), etc.
More information about the Digitalmars-d
mailing list