SML中的非fix运算符

SML中的非fix运算符,sml,Sml,我阅读了SML的语法,发现除了infix和infixr之外,它还包含nonfix。我试图找到一些基本的例子,但似乎没有人使用它。还尝试查找有关该运算符的一些以前的线程,但没有 nonfix背后的想法是什么?为什么似乎没有人使用它?nonfix将中缀运算符转换为元组上的“常规”函数。例如,*是一个类型为int*int->int的函数,但不能被称为*(2,3)。如果出于某种原因您想这样做,您可以执行以下操作: nonfix * 然后,*(2,3)将计算为6 不幸的是,作为一种恼人的副作用,您不能再

我阅读了
SML
的语法,发现除了
infix
infixr
之外,它还包含
nonfix
。我试图找到一些基本的例子,但似乎没有人使用它。还尝试查找有关该运算符的一些以前的线程,但没有


nonfix
背后的想法是什么?为什么似乎没有人使用它?

nonfix
将中缀运算符转换为元组上的“常规”函数。例如,
*
是一个类型为
int*int->int
的函数,但不能被称为
*(2,3)
。如果出于某种原因您想这样做,您可以执行以下操作:

nonfix *
然后,
*(2,3)
将计算为6

不幸的是,作为一种恼人的副作用,您不能再使用
2*3


它似乎没有被大量使用的原因是,如果我想使用
*
作为常规函数,我可以使用
op
:例如,
op*(2,3)
的计算结果为6。以后不能将
*
用作中缀运算符的烦恼超过了不必键入
op

的优点。不过请注意,它的作用域是有限的,所以缺点并不是那么糟糕。我唯一一次使用
nonfix
是想在整个特定结构中使用
mod
作为变量名。