Michael Lazzaro <[EMAIL PROTECTED]> writes: > On Wednesday, December 11, 2002, at 10:36 AM, John Siracusa wrote: >> Maybe "AS_STRING" and "AS_STRING_DEBUG"? Too long? "DEBUG_STRING"? >> Are we married to the "AS_*" thing? > > Not really -- whatever works. We also had .debug, .identity, and .id > proposed, for example. > >>> You shouldn't be stringifying objects merely to test if they're the >>> same object -- yuck. It was an artifact of Perl5 that we should be >>> replacing.) >> So, what is the Perl 6 way to test this? > > I was hoping someone would ask that. :-) We don't _have_ a way, > AFAIK. It was discussed briefly during the operator thread, but > without decision. We know: > > $obj1 == $obj2; # compares them numerically > $obj1 eq $obj2; # compares them stringically > > We could override either C<==> or C<eq> of C<Object> to do it. Then > we have to ask what happens if you say: > > $obj == 5; > $obj eq 'foo'; > > That would hopefully *not* compare the identity of $obj to either 5 or > 'foo', but instead Do The Right Thing (numerify or stringify $obj). > So presumably, this is a job for multimethod variants of > class-specific C<==> or C<eq> operators. Well, sortof. > > OR, you just explicitly compare the identities, e.g. > > $obj1.identify == $obj2.identity; # yuck
I like this. Gets 'round needing a million and one different equality operators. If you find yourself using a particular form more often than others then just write yourself an operator. -- Piers "It is a truth universally acknowledged that a language in possession of a rich syntax must be in need of a rewrite." -- Jane Austen?