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
此代码会产生一些编译错误。
那是
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”
开头
为什么会出现此错误? 我没有使用中缀代码,只是使用变量和异常。
答案 0 :(得分:2)
before
和div
是在SML的Basis库中定义的中缀运算符,因此您不能将它们用作变量或异常的名称,而是首先覆盖它们的中缀声明。