On Mon, Feb 23, 2009 at 09:08:39PM -0700, David Green wrote:
> On 2009-Feb-23, at 10:09 am, TSa wrote:
>> I also think that time and numbers in general should be treated in
>> a fuzzy way by smart match.
>
> My thought is to have == take a :within adverb, at least for imprecise
> types like Num, that could be used to specify how close values need to
> come in order to be considered equal.
>
> So instead of:
> if abs($x-$y)<$epsilon { ... }
>
> you could say:
> if $x==$y :within($epsilon) { ... }
>
> which makes your tests for equality look like tests for equality.
>
> I'd even suggest that the :within be mandatory, to guarantee that the
> coder is aware that "$x==$y" is probably not DWIM. Of course, there
> should also be an easy way to set epsilon across a scope, like:
>
> use Num :precision(0); # force exact matches in this block
Or just:
if $x ~~ $y ± $epsilon {...}
where infix:<±> turns the single value into a range for the smartmatch.
Larry