Pattern matching with reals (Standard ML)
Doing this:
fun test a 0.0 = "good"
| test a b = "bad";
results in an error, but if I change the 0.0 the error goes away. However, I n开发者_开发百科eed to match 0.0 and I'm wondering if and how that can be accomplished.
You can just use an if-statement instead of pattern-matching.
Note that floating point arithmetic is prone to rounding errors, so you should check that the absolute value of b is smaller than some delta rather than that it's equal to 0.0. I assume that's exactly why pattern matching reals is not allowed.
Supposedly it's because real is not an eqtype in SML 97: http://www.smlnj.org/doc/Conversion/types.html#Real-equality
精彩评论