3 ms·
But the square brackets used in array access nest, so the parsing is never ambiguous. The reason > needs braces is that without them, if you're parsing and so
by twic 6y ago
But the square brackets used in array access nest, so the parsing is never ambiguous.
The reason > needs braces is that without them, if you're parsing and so far you've seen these characters:
let y: RectangularArray<i32, X, 2>
You don't know if that final > is ending the argument list, or is a greater-than operator, with the rest of an expression coming after it.
But if it was square brackets, then a closing square bracket on its own can only ever be the end of the list:
let y: RectangularArray[i32, X, 2]
Because if it was closing an array access, there would have to have been an opening square bracket:
let y: RectangularArray[i32, X, a[1]
- twic 6y agoIn case anyone ever stumbles across this thread, a couple of posts about this: https://keleshev.com/parsing-ambiguity-type-argument-v-less-than https://keleshev.com/parsing-ambiguity-type-argument-v-less-... https://soc.me/languages/stop-using-for-generics https://soc.me/languages/stop-using-for-generics