Actually, I was mistaken. The code i pointed at there already works for
this very case. observe:
131338 timotimo │ m: say 4.999999999999999 cmp 5.0
131338 +camelia │ rakudo-moar 1811b8: OUTPUT: «Less»
The real problem is this implementation of &infix:<cmp>:
multi sub infix:<cmp>(Real:D \a, Real:D \b) {
(nqp::istype(a, Rational) && nqp::isfalse(a.denominator))
|| (nqp::istype(b, Rational) && nqp::isfalse(b.denominator))
?? a.Bridge cmp b.Bridge
!! a === -Inf || b === Inf
?? Less
!! a === Inf || b === -Inf
?? More
!! a.Bridge cmp b.Bridge
}
going via .Bridge will turn the Rat to 5e0 and the comparison goes wrong.