2

这样做:

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

导致错误,但如果我更改 0.0,错误就会消失。但是,我需要匹配 0.0,我想知道是否以及如何实现。

4

2 回答 2

8

您可以只使用 if 语句而不是模式匹配。

请注意,浮点运算容易出现舍入错误,因此您应该检查 b 的绝对值是否小于某个 delta 而不是等于 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 回答