2

これを行う:

fun test a 0.0 = "good"
  | test a b = "bad";

エラーが発生しますが、0.0を変更するとエラーはなくなります。しかし、私は0.0に一致する必要があり、それを達成できるかどうか、そしてどのように達成できるのか疑問に思っています。

4

2 に答える 2

8

パターンマッチングの代わりにifステートメントを使用できます。

浮動小数点演算は丸め誤差を起こしやすいため、bの絶対値が0.0に等しいというよりも、あるデルタよりも小さいことを確認する必要があることに注意してください。それが、パターンマッチングの実数が許可されていない理由だと思います。

于 2010-07-04T18:09:06.433 に答える
6

おそらく、realはSML 97のeqtypeではないためです:http ://www.smlnj.org/doc/Conversion/types.html#Real-equality

于 2010-07-04T19:48:25.540 に答える