views:

57

answers:

2

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 need to match 0.0 and I'm wondering if and how that can be accomplished.

+8  A: 

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.

sepp2k
+6  A: 

Supposedly it's because real is not an eqtype in SML 97: http://www.smlnj.org/doc/Conversion/types.html#Real-equality

newacct