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

このコードはコンパイルエラーを引き起こします。

あれは

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"で始まる

なぜこのエラーが発生したのですか?中置コードは使用しませんでしたが、変数と例外を使用するだけです。

4

1 に答える 1

2

beforeおよびdivはSMLのベーシスライブラリで定義されている中置演算子であるため、最初に中置宣言をオーバーライドして変数または例外の名前として使用することはできません。

于 2011-06-12T07:06:36.607 に答える