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

Reply via email to