
At first I didn't understand this. But upon a little reflection I think it is a very interesting idea. If Dimensional analysis were built on top of this, odd ball cases such as "nanovolts per sqrt(Hz)" could be handled as specializations of <T,X1> op <T,X2> while default dimensional analysis would be used it implement the default cases. Robert Ramey Matt Austern wrote:
There's actually something even lower level than a dimension library. In essence, what we've got is: - We're generalizing the notion of an arithmetic type T to a type of the form <T,X>, where X is some sort of tag. - For any X1 and X2 and any arithmetic operation 'op', we have rules for whether <T,X1> op <T,X2> is well defined. If it is then the result is tagged as <T,X3>, and we have rules to determine X3 in terms of X1, X2, and op.
All of the knowledge about how to represent dimensional systems (mpl vectors, compile-time fractions, etc.) is higher level than this.