3 ms·
That's not better. It's more confusing to see a symbol that's normally an operator than it is to see a keyword.
by vexal 14y ago
That's not better. It's more confusing to see a symbol that's normally an operator than it is to see a keyword.
- deleted 14y ago[deleted]
- abcd_f 14y agoIt's only confusing if you are a language parser. I doubt that anyone else would have any problem guessing what this means.
- astine 14y agoIt looks like a syntax error to me. You can add numbers in array index brackets so a plus sign already has meaning there. Considering that a[10+] is just one character off from a[10++], it seems to me that this is just a bug waiting to happen.
- bunderbunder 14y agoIt would be a syntax error. . . unless you add syntax for it. As far as it being a bug waiting to happen, C already has plenty of traps like that - '=' vs '==', '&' vs '&&', and so on. In terms of grammatical clarity, I shouldn't think it would be any more confusing than any other operators that have both unary and binary versions. By my count C already has three of those: '-', '&', '*'. The latter two are even examples where the unary meaning and the binary meaning are wholly unrelated. Besides, it's a way of using + that is already well-established in everyday idiom. And there are semantically-related uses for + that are already well-established in computer languages, too - the Kleene +, for example, should be familiar to everybody. In terms of how it would work for the grammar I realize this would be somewhat of a departure since it's repurposing a symbol that's normally an operator to be used in a manner that would be more like a keyword according to C syntax. . . but I think that's a detail that should be much more interesting to standards committees than it is to people who primarily just use the language. And in terms of the human factor I submit that it's much more workable than taking a word from the English language and repurposing it to mean something that's more-or-less the opposite of what it means in English.
- robinh 14y ago"As far as it being a bug waiting to happen, C already has plenty of traps like that - '=' vs '==', '&' vs '&&', and so on." And C programmers are already spending plenty of their time cursing the world because of those things. Let's not add more of that, shall we? ;)
- spoiler 14y agoI never ever had problems with it in C. I actually had a problem with it in another language (might have been a BASIC) where = was contextual, so one could do "a = 10" and then somewhere down the line "if x = 5 then". I used == and couldn't figure out what was wrong for nearly 5 minutes (I think it was recognising (or not) as an unexpected token). = and == should have different meanings. I also like how JavaScript has ===, although it is a little superfluous.
- einhverfr 14y agoInterestingly PostgreSQL's pl/pgsql does that. There are two operators, equality = and assignment := But where it is clear that assignment was meant, = is treated as assignment. this means you can: a = 5; -- exactly equivalent to a := 5 here if a = 6 then raise exception 'this should never happen'; end if; Interestingly this is entirely a Postgres-ism. Oracle's PL/SQL offers no such "feature."