On Thursday, 15 August 2024 at 16:40:31 UTC, Timon Gehr wrote:
> On 8/13/24 22:30, IchorDev wrote:
> On Tuesday, 13 August 2024 at 10:14:29 UTC, Timon Gehr wrote:
> […]
[…]
The main issue is this is a typo that indeed happens now and then, not that people would think it works.
> Do we really need to pander to people who don’t even understand that logical operators only return bool
?
That's a strawman, and a bit insulting to anyone who has made this particular typo.
> Maybe that seems harsh, but I have never even thought of doing this because it’s just so obviously wrong—if I wrote it then I must have meant what I wrote, and I was probably happy with how it looked too.
Your elitist attitude is somewhat common and I think used to make similar (if somewhat less strong) statements 10 years ago, but I think it was not particularly wise.
Sorry, I really had just never heard of people actually having this problem before reading this thread.
> E.g., when you have:
foo() || function_call_long_name() == c
Now you negate the entire thing:
!(foo() || function_call_long_name() == c)
Now you think it would be more readable with individual negations.
!foo() && !function_call_long_name() == c`
This could easily happen, particularly if you are tired and you write a lot of Python.
I don’t really use Python very often, but I have done my fair share of after-hours programming. Does being tired really impair everyone else’s faculties of reasoning so much, or are you all really really sleep deprived? I hope you're all getting enough sleep! Anyway, I myself have made my fair share of other weird errors when being tired, but I’m not sure I could blame the language’s design for that.
> In the end, most code you'll run is not written by you. And most readers of your code do not want to read !a==b
.
> Having to wrap it in parenthesis would just negate that and add to my code’s parenthesis hell.
P.S. this isn’t a bug;
This is a DIP idea, not a bug report.
Eh? As if I said this was a bug report? I am of course responding to you saying that this a bug:
> > > A bug that crops up now and then in D is that someone negates a == b
by prepending a !
.
What you are describing is not a bug in D at all, it’s a programming error wherein the programmer misuses the logical not operator. Describing this arrangement as a bug in the language is misleading if not entirely erroneous.
> > and !
is ‘logical not’, not ‘negation’.
Those are in fact synonyms.
https://en.wikipedia.org/wiki/Negation
They are synonyms in Boolean logic, but not in programming, or in D. This is why we place the prefix ‘logical’ before them, because these are concepts from another area of study that uses conflicting terms.