On Mon, 8 Dec 2003 11:35:59 -0500, Dan Sugalski <[EMAIL PROTECTED]> wrote:

>At 12:15 PM +0100 12/7/03, Leopold Toetsch wrote:
>>Pete Lomax <[EMAIL PROTECTED]> wrote:
>>>  ... only to find there are no such equivalents for ne, gt, and ge.
>>
>>I've added these missing ops now. *But* there are a lot more missing:
>
>Yeah, we need all the comparison operators for PMCs in both numeric 
>and string versions.
This needs quite careful thought.
>I'd like to throw a _str and _num suffix on 
>them, so we have:
>
>   eq_str
>   lt_num
>   cmp_str
I disagree/don't see the point, pls read on.
>
>and so on. I think, at this point, that I'm OK with restricting the 
>eq/lt/whatever unqualified versions to same-type comparisons--i.e.:
>
>    eq I5, 13
>    lt S5, "Foo"
>
>and have them do the obvious thing (numeric or string comparison). 
AFIAK, this happens quite reasonably now.
>Cross-type comparisons without PMCs won't be allowed, 
Agreed, that's been my (short-term) experience.
>so if you want this:
>
>    lt S5, 12
>
>you'll need to either get the integer contents of S5 or turn 12 into 
>a string, so it's a two-op sequence. Not too onerous. (int/float 
>mixes are still OK, they're obvious)
Yes, 1) get length of string,
         2) compare integers.
(or whatever)

>
>Unqualified eq/cmp/lt are OK for two PMC operations,
I'm not convinced at all here. PMC comparison ops, afaict, are based
solely on the pmc instance/address

Here's a snippet to play with:

        $P1 = new Array
        $P1 = 2
        $P1[0] = 1
        $P1[1] = 1
        $P2 = new Array
        $P2 = 2
        $P2[0] = 1
        $P2[1] = 1
#       eq $P1, $P2, _L3
        eq "fred", "fred", _L3
        print "error \"fred\"!=\"fred\""
_L3:


Is $P1=$P2?

> and call the 
>underlying unqualified comparison check, but I'd bet that's rarely 
>used.
Well, that's what I'm doing: eq_i_i_*, eq_n_n_*, and eq_s_s_*, I'm
using directly; the rest are going though a check/cast types routine.

>Odds are most compilers will go for the explicit string or numeric 
>comparisons, or MMD on type to figure out which to use, but we can 
>leave that to the compiler writers. (Enough people have been burned 
>with the whole "my numbers sorted weird" issue to explicitly specify 
>numeric or string comparisons pretty much everywhere)

Reply via email to