Standard ML, Infix identifier ERROR code

2019-08-15 12:12发布

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

This code yields some compile error.

That is

e.sml:4.8-4.14 Error: expression or pattern begins with infix identifier "before"
e.sml:6.8-6.14 Error: expression or pattern begins with infix identifier "before"
e.sml:6.57-6.60 Error: expression or pattern begins with infix identifier "div"
e.sml:6.81-6.84 Error: expression or pattern begins with infix identifier "div"
e.sml:6.88-6.94 Error: expression or pattern begins with infix identifier "before"

Why this error occured? I didn't use infix code, but just use variable and exception.

1条回答
唯我独甜
2楼-- · 2019-08-15 12:38

before and div are infix operators defined in SML's Basis library, so you can't use them as names for variables or exceptions with overriding their infix declaration first.

查看更多
登录 后发表回答