首页 > 解决方案 > SML 中的非固定运算符

问题描述

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

背后的想法是nonfix什么?为什么好像没人用?

标签: sml

解决方案


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

nonfix *

然后* (2,3)将评估为 6。

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

它似乎没有被大量使用的原因是,如果我想*用作常规函数,我可以使用op:例如,op * (2,3)评估为 6。以后无法*用作中缀运算符的烦恼胜过不用打字的好处op


推荐阅读