Thanks Bruce. I did submit the suggestion and Wolfram Support replied that they had submitted a formal suggestions report for the developers.
If there are others that think Mathematica could use a more unified and better documented method of defining precedence for operators without built-in meaning it might be helpful to chime in and give some support.
My suggestion was as follows:
I would like to suggest that WRI improve its usage and documentation of operator precedence, and specifically with regard to infix operators that have no build-in meaning. It would also be nice to have a wider choice of such operators.
My motivation for this is that Im working with John Browne with his Grassmann Algebra application and trying to extend it to a Grassmann Calculus application that includes general tensor operations. I can use CircleTimes for a general tensor product, Wedge for the antisymmetric exterior products and I need an infix operator for symmetrical products. I would like to use LeftRightArrow because it looks like and seems to imply symmetrical interchange. However it has lower precedence than CircleTimes and thus would require manual insertion of precedence. I will reluctantly use instead UpArrow, which has a better precedence.
The handling of Precedence seems to be somewhat scattered, disparate and poorly documented.
1) Precedence gives the precedence of an operator but there is no usage message for it and no Function page.
2) It is very difficult to find the tutorial/OperatorInputForms page. The PrecedenceForm page does not give a link to it, nor does it give a link to the Precedence command. The OperatorInputForms page does not give the actual precedence numbers nor does it include all the operators without built-in meaning.
3) SyntaxForm seems to be another method of specifying precedence in some constructions such as InterpretationBox. However, it is not fully integrated into Mathematica and is extremely poorly documented as to how one would use it to specify precedence. Frankly, I would just as soon see it junked in favor of a unified precedence system.
Perhaps there is more to the use of precedence in Mathematica than I am aware. Nevertheless, it would be nice if there were a uniform system based on the precedence number, Precedence[operator]. Something like Precedence[LeftRightArrow] = 575.1 say. But only allowed to affect a set of operators without a built-in meaning. (This should be based on a set of absolutely protected precedencies with others allowed to be changed.)
It would also be very useful if there was a larger set of undefined operator symbols, such as in MathML for example.
Better yet, it would be nice if one could construct operator symbols (say in an InterpretationBox) using StyleBox and other Box constructions. I use MakeBoxes constructions quite frequently without too much difficulty. However, I find the documentation for MakeExpression, especially as an inverse to MakeBoxes, quite skimpy and difficult to follow.
It is also important to me that I can use these infix operators in PasteButtons and patterns.
I suggest that a better facility for introducing operators with precedence would be quite useful to users, and especially to mathematicians, who certainly are great at inventing notations that are difficult to anticipate.
Finally, it is sometimes suggested to use the Notation package for this. I have spent many days trying to understand the usage of that package. I find it far too difficult to use and I think ill-designed. I certainly wouldnt like to load it as part of my application. Although I might agree if youre really an expert at the Notation package you can do some useful things, I would much prefer to write my own MakeBoxes and MakeExpression routines and proceed down that path. That seems to merge better into the rest of Mathematica.