On Tue, 1 Apr 2003, Michael Lazzaro wrote:

> On Tuesday, April 1, 2003, at 10:35  AM, John Williams wrote:
> > On Tue, 1 Apr 2003, Michael Lazzaro wrote:
> >> So I would imagine it _is_ possible to test that two values "have the
> >> same identity", but I would imagine it is -not- possible to actually
> >> get what that identity "is".  There's no .id method, per se, unless
> >> you
> >> create one yourself.
> >
> > What about the \ (reference) operator?  If you take two references to
> > an
> > object, they should compare the same, right?
>
> In theory, I would think so.  But in P6 practice, that might not be as
> useful as it sounds:
>
>     my @a;
>     my @b := @a;  # bind @b same as @a
>
>     [EMAIL PROTECTED] == [EMAIL PROTECTED];   # true, but not for the reason you 
> think!
>      @a =:= @b;   # true, are bound to the same array

You're right, but personally, I have come to trust eq more that == when
comparing things-which-might-not-be-numbers, such as references.

     [EMAIL PROTECTED] eq [EMAIL PROTECTED];    # true, for the reason I think
                    # (the string-representation of the refs are equal)

> [*] (Also, any identity test that relies on numerification or other
> transformation of the comparators is doing a lot of unnecessary work.)

Quite true.  But if we can agree that the reference is by necessity a
unique identifier for the object (or the container, at least), then a
$obj.id method which returned a numified reference value would do what you
want without unnecessary work (stringification) or unexpected results
(numification yields the length), Yes?

~ John Williams


Reply via email to