Em Qui, 2009-07-09 às 22:50 -0400, Buddha Buck escreveu:
> Both the separate pathname type and the stat($str, :e) proposal
> salvage the purity of Str, so either would be acceptable to your
> argument.
The bigger problem of using a different type is that
"/etc/passwd" ~~ :e
Would dispatch to Str, which means that you'd need to
PathName("/etc/passwd") ~~ :e
which doesn't seem much interesting huffman-wise.
On the other hand, a multi would allow more clear semantics, and
wouldn't require an explicit typecast, as in:
stat "/etc/passwd", :e
This still allow the existance of the most specific PathName type, and a
signature like
multi stat(PathName $name, *%switches) { ... }
where...
role PathName {
multi method ACCEPTS(Str $path where { .defined }) {
$path ~~ /<PathName::token>/
}
multi method ACCEPTS(Str $path where { not .defined }) {
1;
}
}
daniel