Binary === tests type and value correspondence: for two value
types, tests whether they are the same value (eg. 1 === 1); for
two reference types, checks whether they have the same identity
value. For reference types that do not define an identity, the
reference itself is used (eg. it is not true that [1,2] ===
[1,2], but it is true that @a === @a).
There's a problem here, from my point of view. I'll take it one
assumption at a time:
* $whatever.as<Object>.id ~~ $whateverelse.as<Object>.id is true
if and only if $whatever := $whateverelse at some point in the
past, either explicitly, or through some sort of folding.
* Str is a boxed type, and thus is a "reference type"
* Thus, Str should be compared by .id and not by value, according
to the above.
So, IMHO, either there's a mistake in S03; Str is a special case WRT
===; or I misunderstand "reference type" (which S03 never defines).
Two things were mentioned on IRC about this:
* Str might be compared by .id, but .id for Str is based on the
contents of its underlying storage... this worries me because it
means that Strs with radically different "meanings" would be ===
because their encoding is different.
* A reference type might only mean containers (though S03 seems to
imply that objects are included to me).
Thanks, and sorry for all the lame questions! I'm just trying to make
sure that the docs I write aren't utterly, worthlessly wrong. :-/
Aaron Sherman <[EMAIL PROTECTED]>
Senior Systems Engineer and Toolsmith
"We had some good machines, but they don't work no more." -Shriekback