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