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
作为变量名。