In a message dated Thu, 13 Mar 2003, Luke Palmer writes:
>     {
>       my Class %valClasses;
>
>       sub Val($N) returns Class {
>         my Class $rclass = %valClasses{$N} //= class {
>           multi *isa ($obj, $rclass $class) { $obj ~~ $N }
>         }
>       }
>     }
>
>     multi factorial (Int & Val(0) $g) { 1 }

Isn't this exactly what C<is cached> is for?

  sub Val($N) is cached returns Class {
      class {
        multi *isa ($obj, $rclass $class) { $obj ~~ $N }
      }
  }

  multi factorial (Int & Val(0) $g) { 1 }

(This is ignoring the fact that you can't use a runtime-evaluated sub in a
type declaration so the multi declaration wouldn't actually work.)

-- 
Trey Harris
Vice President
SAGE -- The System Administrators Guild (www.sage.org)
Opinions above are not necessarily those of SAGE.

Reply via email to