Sml 标准ML,中缀标识符错误代码

Sml 标准ML,中缀标识符错误代码,sml,identifier,infix-notation,Sml,Identifier,Infix Notation,这段代码会产生一些编译错误 就是 e、 sml:4.8-4.14错误:表达式或模式以中缀标识符“在” e、 sml:6.8-6.14错误:表达式或模式以中缀标识符“在” e、 sml:6.57-6.60错误:表达式或模式以中缀标识符“div”开头 e、 sml:6.81-6.84错误:表达式或模式以中缀标识符“div”开头 e、 sml:6.88-6.94错误:表达式或模式以中缀标识符“before”开头 为什么会发生此错误? 我没有使用中缀代码,只是使用了变量和异常。之前的和div是SML的B

这段代码会产生一些编译错误

就是

e、 sml:4.8-4.14错误:表达式或模式以中缀标识符“在”
e、 sml:6.8-6.14错误:表达式或模式以中缀标识符“在”
e、 sml:6.57-6.60错误:表达式或模式以中缀标识符“div”开头
e、 sml:6.81-6.84错误:表达式或模式以中缀标识符“div”开头
e、 sml:6.88-6.94错误:表达式或模式以中缀标识符“before”开头

为什么会发生此错误?
我没有使用中缀代码,只是使用了变量和异常。

之前的
div
是SML的Basis库中定义的中缀运算符,因此您不能将它们作为变量或异常的名称,而首先重写它们的中缀声明。

实际上,您可以,但您必须使用'nonfix'关键字删除它们的中缀状态。然而,这是一种不好的做法,使用其他名称是非常优先的。此外,已经有一个被零除的异常,叫做Div,为什么不使用它呢?
exception div;  
fun f(x,y) =   
    let  
        val before = 2.0 * x + 3.0 * y  
    in   
        (before + (1.0 / (if x > 0.0001 then x else raise div)) + 2.0 / y) handle div => before / 6.0
    end