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