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

Reply via email to