Larry Wall wrote: > Maybe there's an intermediate syntactic form like: > > $x but subclass MyClass does FooBar[bar] { }
IMHO, C<but> should be defined as generating a singleton class that derives from the variable's class and composes a specified role - but not neccessarily a I<pre-existing> role. How about defining it such that the presence of C<is>, C<does>, or curly braces immediately following C<but> implies that the term is an anonymous role definition: $x but is red does bar { } eqv role AnonRole is red does bar { } $x but AnonRole; eqv role AnonRole is red does FooBar[bar] { } $x but AnonRole; You never slatheron more than one role at a time; but you can create the role that you're going to slatheron on the fly. Potential problem: identifying duplicate anonymous roles (an issue of optimization). The upside: once that problem's solved, the problem of caching singleton classes is greatly simplified. Also, it removes the run-time $x from the compile-time side of things. There's one "degenerate case" for on-the-fly roles: $x but does foo { } eqv $x but foo; ===== Jonathan "Dataweaver" Lang __________________________________ Do you Yahoo!? New Yahoo! Photos - easier uploading and sharing. http://photos.yahoo.com/