Human Thinking vs. Parser Thinking (2016)
dannysu.com
dannysu.com
But even there, it could not be "instantiate whatever ClassName().something() returns", because php being php has no qualms having places in code where string literals, variables and properties are accepted, but no other expressions that would return a string.
In F# you can use `f()` or `g ()`, but if you are chaining them, `f ().g ()` is not the same thing as `f().g()`, so you are forced to write `(f ()).g ()` if you use spacing.
Never encountered it, but after thinking it through, I think I see why it behaves differently. a standalone `()` is the unit value, while a `f()` is a function call. And `f ()` is passing the unit value into the function f.
And now I think I can't unsee that wart on f#. (I personally mostly use the `f()` style of function calls)
The strict flat-binding left to right chains of the dot and friends allow for a nicely streamlined "intra-expression scope" in the mind while reading. To me this feels like a lot of brain capacity getting freed for more important things. King of that hill is the "kotlin let" which allows just about everything to get converted into left-to-right. I miss that in every other language.