At 8/30/2010 07:12 PM, Joshua Juran wrote: >On Aug 30, 2010, at 3:45 PM, Paul C. Anagnostopoulos wrote: > >>As an example of a PMC that inherits from Integer and might rely on >>the current behavior, I give you Boolean. It inherits 'neg' and >>relies on the fact that it does not promote to implement the >>following bizarre behavior: >> >>-(Boolean true) => true >>-(Boolean false) => false >> >>I will simply implement 'neg' in Boolean to preserve this whackiness. > >What's so odd about that? If you think of 'false' as zero, then the >inverse of zero equals zero (false) and the inverse of any non-zero >integer is non-zero (true, e.g. 1 -> -1). Though if Boolean is a one- bit >integer, it must be an unsigned type, and -true will wrap around >to true anyway.
I don't think of booleans as integers, so negating them is incoherent. But let's not get into that religious war. I agree that if you think of 0 as false and everything else as true, then negating a boolean should not change its value. But providing negation for booleans is just another way to end up with obscure and possibly buggy code. ~~ Paul
_______________________________________________ http://lists.parrot.org/mailman/listinfo/parrot-dev
