So putting the parenthesis around the operator when in the correct context give you the function of this operator. Where is this syntax documented?
I don’t think it is documented, because it’s actually just the operator without arguments which give you the function of the operator. Adding parentheses simply ensures that the parser doesn’t find any arguments.
Indeed, the brackets aren’t necessary.
E.g. you can do
[1, 2, 3].reduce(0, +)
let not = (!)
when you need to get the operator's function.
I think document this would be very helpful.
Did anyone ever file a bug for the throws issue?