Damian Conway <[EMAIL PROTECTED]> wrote: > > There are in fact *two* types associated with any Perl variable: > > 1. Its "storage type" (i.e. the type(s) of value it can hold) > This is specified before the variable or after an C<of> or C<returns>. > It defaults to Scalar. > > 2. Its "implementation type" (i.e. the class that tells it how to act) > This is specified after an C<is>. It defaults to the type indicated > by the variable's sigil.
How does it work regarding inheritance and polymorphism ? E.g. consider my @a is Set of Apple; my @b is Basket of Fruit; with Apple isa Fruit, and Basket is a Set. I assume I can use @a or @b where the expected type is: @a @b Set ok ok Set of Fruit ok ok Set of Apple ok no(?) Basket no ok Basket of Fruit no ok Basket of Apple no no(?) the errors being compile-time or run-time, depends on how much verification the compiler can perform with its input. Reminds me the "Set<Apple>" C++ templates. And the whole mess that comes with it (when you've got a statically typed language.)