交番高調波級数の部分和を計算する関数を SML で記述しようとしていますが、私の人生では、コンパイラーがケースの 1 つが冗長であると言う理由を理解できません。私は以前にケースステートメントを使用したことがありません(またはローカル、その点については)が、これらのケースの順序は正しいようです。
local
fun altHarmAux (x:int, y:real) =
case x of
1 => 1.0
| evenP => altHarmAux(x-1, y - y/(real x))
| oddP => altHarmAux(x-1, y + y/(real x))
in
fun altHarmonic (a:int) = altHarmAux(a, real a)
end