我阅读了SML
的语法,发现在infix
和infixr
旁边还包含nonfix
。我试图找到一些基本示例,但似乎没有人使用它。还尝试找到有关该运算符的先前线程,但没有。
nonfix
背后的想法是什么?为什么似乎没人使用它?
答案 0 :(得分:3)
nonfix
将infix运算符转换为元组的“常规”函数。例如*
是类型int * int -> int
的函数,但不能称为例如* (2,3)
。如果出于某种原因要这样做,可以执行以下操作:
nonfix *
,然后* (2,3)
将得出6。
不幸的是,作为令人讨厌的副作用,您不能再使用2 * 3
。
它似乎不被广泛使用的原因是,如果我想将*
用作常规函数,则可以只使用op
:例如op * (2,3)
计算结果为6。无法稍后将*
用作infix运算符的烦恼超过了不必键入op
的优势。