这样做:
fun test a 0.0 = "good"
| test a b = "bad";
导致错误,但如果我更改 0.0,错误就会消失。但是,我需要匹配 0.0,我想知道是否以及如何实现。
这样做:
fun test a 0.0 = "good"
| test a b = "bad";
导致错误,但如果我更改 0.0,错误就会消失。但是,我需要匹配 0.0,我想知道是否以及如何实现。
您可以只使用 if 语句而不是模式匹配。
请注意,浮点运算容易出现舍入错误,因此您应该检查 b 的绝对值是否小于某个 delta 而不是等于 0.0。我认为这正是不允许模式匹配实数的原因。
据说这是因为 real 不是 SML 97 中的 eqtype:http ://www.smlnj.org/doc/Conversion/types.html#Real-equality