Carl Mäsak wrote:
> But on another level, the level of types, Perl 6 makes it fairly
> *un*natural that the type C<Foo> refers to the type C<Bar>, which in
> turn refers to the type C<Foo>.
True, and that has also been bothering me quite a bit.
The "solution" is to always write ::Typename instead of Typename....
except when it isn't a solution.
First of all in signatures ::T means actually "type capture", secondly I
guess that some constructs really want to resolve type names at compile
time -- for example the multi dispatcher needs to know the inheritance
structure of a type in order to its pre-sorting of signatures.
The first problem could be solved by introducing another syntax for type
captures (perhaps :>foo or so?), of the second I know too little to
really comment on it.