BigInt bool assign

Derek ddparnell at bigpond.com
Fri Dec 23 17:30:08 PST 2011


On Sat, 24 Dec 2011 09:19:26 +1100, bearophile <bearophileHUGS at lycos.com>  
wrote:

> Derek Parnell:
>
>> I'm with Don on this one because a boolean and an integer are not the  
>> same
>> concept, and even though many programming languages implement booleans
>> using integers, it still doesn't make them the same thing.
>
> D doesn't implement booleans with integers, D has a boolean type. But D  
> allows bools to implicitly cast to ints/longs.
> Not allowing a BigInt to be initialized with a bool value introduce an  
> inconsistency that makes BigInts more complex because there is one more  
> rule to remember, less inter-operable with ints, and I don't think it  
> introduces advantages.

I agree that 'consistency' is a powerful argument. So it comes down to is  
D meant to be the best language or an adequate language.

I maintain that D would be a better language if it didn't allow implicit  
bool <-> int conversions. The most common thing that humans do to source  
code is read it, in order to understand it's purpose and/or intentions. We  
would do ourselves a service if we strive to make programing languages aid  
this activity. Some implicit conversions can mask a coder's intentions,  
and I believe that bool/int is one of those.


>> Using booleans as implicit integers can be seen as laziness (i.e. poor
>> documentation of coder's intent) or a legitimate mistake (i.e
>> unintentional usage by coder).
>
> In my code such mistakes are uncommon.

But not impossible.

>> By insisting that an explicit cast must be
>> used when one wants a boolean to behave as an integer allows the coder's
>> intent to become more apparent when reading their source code. This has
>> nothing to do with machine code generation, just source code legibility.
>
> Casts are powerful tools, they shut up the compiler and they assume the  
> programmer is perfectly right and has perfect knowledge of what's going  
> on.

Do you really believe that the purpose of casts are to "shut up the  
compiler"? Seriously?

> In practice my experience shows that the programmer (me too) sometimes  
> doesn't have perfect knowledge (usually because the code later was  
> modified, turning the cast into a bug because casts are often silent).

You realize that the exact argument can be made about implicit casts.

> This is why it's better to avoid casts, not requiring them in the first  
> place, unless they are useful. In this case I think a cast introduces  
> more danger than the risks caused by implicit bool->int conversions.

If we assume that explicit casts are required for bool->int conversion,  
can you show some code in which this could cause a problem?

-- 
Derek Parnell
Melbourne, Australia


More information about the Digitalmars-d mailing list