开发者

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

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜