On Sunday, 29 October 2017 at 20:37:21 UTC, bauss wrote:
But casting to bool is what you use to tell whether something is valid or not.

true = valid, false = invalid.


Not really. In mathematics 0 and 1 can be considered as "true" and "false" for a 2-value calculus, while you might reserve ⊤ and ⊥ for true and false in the logic you use to reason about that calculus.

Which is why some languages assumes an equality between 0 and true and 1 and false, but that does not by necessity suggest valid/invalid.

On the other hand. For things like Unix function call return values -1 is often used to signify an invalid result, and 0 does not signify failure.

So if you want strict typing, you have to do something else. Because C (and thus D) takes the mathematical view on the relationship between integers and bools and propagate that view to all other basic types (e.g. floats).


Ola.

Reply via email to