Hi Theodore,

Firstly, sorry if my previous e-mail came across overly negative, I wasn't in the best mood when I wrote it (gestures vaguely at the state of the world).


I think this is possibly the best line I've read all week:

Well, I guess the line between objective and subjective may sometimes
be a bit subjective. :)

Ultimately, it all comes down to judgement calls - is the double-angle-bracket syntax "too verbose", "too ugly" when nested, etc; and does the double-at syntax make it "better enough".

So I'll try not to get into endless back-and-forth on every point, and just pick up on a couple of things.



On 04/06/2020 23:20, Theodore Brown wrote:
Also, grouped attributes would probably have to be special-cased to
be disallowed in nested attributes, since they don't make sense there.


I'm not entirely clear how they work in current implementations like Doctrine's, but I think nested attributes would have to have completely different rules anyway, because you don't access them directly through reflection in the same way.

If <<Foo( <<Bar>> )>> means something like "new Foo( new Bar )", then I can imagine it being useful for <<Foo( <<Bar, Baz>> )>> to mean "new Foo( [new Bar, new Baz] )". That would actually be more convenient than the double-at version, where you'd have to write @@Foo( [ @@Bar, @@Baz ] ) or use a constructor with a ...$variadic parameter.



I don't understand how it's disingenuous. The RFC refers to the shift
tokens as such because that's what they are (`T_SL` and `T_SR`). The
proposed `@@` syntax uses a new `T_ATTRIBUTE` token.


The "::" token in the parser is called T_PAAMAYIM_NEKUDOTAYIM, and personally I find T_SL and T_SR just as cryptic and irrelevant. The most common place I see those token names is when accidentally running code with conflict markers like "<<<<<<<<", or when messing up heredoc syntax; even if they weren't so abbreviated, my reaction would be "shift what now?" I've used bit-shifts maybe twice in the last ten years, so it's just not an immediate association to me.

"Disingenuous" was probably too strong a word, but I do think it relates to a fundamental difference in viewpoint: to some people, << and >> are first and foremost the shift-left and shift-right operators, and so the immediate association on seeing them is so obvious it's not worth mentioning; to others, they just look like a new kind of brackets.

That association might actually be a good reason to avoid that syntax, but if so it should be spelled out, rather than taken as a given.


Regards,

--
Rowan Tommins (né Collins)
[IMSoP]

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to