In this example:
%hash = ($a=>$b);
$a can be anything. In fact, since Perl6 promises to retain the original
value of $a, we're rather encouraged to store complex data there. But,
this poses a problem. The key to use for hashing might not ideally be
the string representation.
For example, if I'm hashing a collection of special file objects, it
might be useful in one context to do:
method operator:qq () {
return read_whole_file();
}
But, if I have 100 of these objects, and I try to put them in a hash,
life could get ugly fast!
More helpful would be to have this builtin:
method operator:hash () {
return operator:qq();
}
and then allow me to override it in my class like so:
method operator:hash () {
return filename();
}
This allows me to specify separate hashing and stringification methods,
but retains Perl's original default of combining the two.