2011-06-12 5 views
1
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 

이 코드는 컴파일 오류가 발생합니다. 표준 ML, 중위 수식 식별자 ERROR 코드

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"

왜이 오류가 발생한다

? 중위 부호를 사용하지 않았지만 변수와 예외 만 사용하십시오.

답변

1

beforediv은 SML Basis 라이브러리에 정의 된 중위 연산자이므로 먼저 중첩 선언을 무시하고 변수 또는 예외의 이름으로 사용할 수 없습니다.

+0

감사합니다. 그것은 아주 작은 문제였습니다. – manut

+1

사실, 할 수는 있지만, 'nonfix'키워드로 중온어 상태를 제거해야합니다. 그러나 이것은 나쁜 관행이며 다른 이름을 사용하는 것이 좋습니다. 게다가 Div라고하는 제로 예외에 의한 분류가 이미 있습니다. 왜 그것을 사용하지 않습니까? – margnus1