yank unary '+'?

Michel Fortin michel.fortin at michelf.com
Tue Dec 8 05:40:20 PST 2009


On 2009-12-07 23:52:04 -0500, Andrei Alexandrescu 
<SeeWebsiteForEmail at erdani.org> said:

> Michel Fortin wrote:
>> On 2009-12-07 01:29:14 -0500, Andrei Alexandrescu 
>> <SeeWebsiteForEmail at erdani.org> said:
>> 
>>> Using double negation !!x throughout, there are only advantages and no 
>>> disadvantage. I hit that design with Pacquiao punches over the past 
>>> week or so, and couldn't find any shortcoming. It's consistent across 
>>> positive and negated uses, easy to understand, easy to define, 
>>> consistent with built-in types, and Walter likes it.
>> 
>> I'm not sure that's a great idea. What if you define your own FuzzyBool 
>> type (containing some sort of probability) and FuzzyBool.opUnary!("!") 
>> returns an inverted FuzzyBool (with 1 - original probability) instead 
>> of a regular bool, you'd have an infinite loop trying to evaluate 
>> !!myBoolValue.
> 
> Yeah, I thought about that liability and decided to discount it as a 
> design mistake of the user. If a type decides to return non-bool from 
> "!", they are bound to unpleasantly surprise its user in more ways than 
> one. You can define a negate for FuzzyBool - just don't dress it as the 
> "!" operator.

To me, its using "!" to transform something to a bool that looks like a 
hack. Surely there's a more explicit and intuitive way to define it 
that doesn't tie it to a specific operator.

opTest perhaps?

And if you think "!" should always return a bool, then it should just 
not be overridable and should be defined as returning the negation of 
opTest (or whatever the name). I don't feel restricting unary "!" to 
return a bool is sound when all other unary ops can be defined to 
return anything.

-- 
Michel Fortin
michel.fortin at michelf.com
http://michelf.com/




More information about the Digitalmars-d mailing list