SML中的nonfix运算符

时间:2019-02-21 21:20:33

标签: sml

我阅读了SML的语法,发现在infixinfixr旁边还包含nonfix。我试图找到一些基本示例,但似乎没有人使用它。还尝试找到有关该运算符的先前线程,但没有。

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

1 个答案:

答案 0 :(得分:3)

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

nonfix *

,然后* (2,3)将得出6。

不幸的是,作为令人讨厌的副作用,您不能再使用2 * 3

它似乎不被广泛使用的原因是,如果我想将*用作常规函数,则可以只使用op:例如op * (2,3)计算结果为6。无法稍后将*用作infix运算符的烦恼超过了不必键入op的优势。