develooper Front page | perl.perl6.language | Postings from May 2008

Re: OK, ::?CLASS not virtual

Thread Previous
From:
John M. Dlugosz
Date:
May 1, 2008 06:31
Subject:
Re: OK, ::?CLASS not virtual
Jon Lang dataweaver-at-gmail.com |Perl 6| wrote:
> John M. Dlugosz wrote:
>   
>>  And you can use CLASS in a role also, confidant that it will be looked up
>> according to the normal rules when the class is composed using that role,
>> just like any other symbol that is not found when the role is defined.
>> Using ::?CLASS in a role is an error (unless you mean the class surrounding
>> this role's definition, in which case it is a warning).
>>     
>
> Can a role inherit from a class?  If so, to which class does CLASS
> refer: the inherited one, or the one into which the role is composed?
>
>   
If you have an "is Base" item in a role, that will apply the inheritance 
to the composited class when it is used.  Whether the role itself 
inherits depends on how you think about it.

In all cases, CLASS will refer to a virtual symbol that becomes the 
most-derived (complete) class at run time.  In an object, CLASS refers 
to the final dynamic type.  It is virtual.  For my treatment of the 
subject, see my "spec doc" at <http://www.dlugosz.com/Perl6/>, section 
12.5.1 "Class names used in methods".  I'd be happy to talk more about 
it in-depth.  Also check the mailing list for the discussion "Class 
names are virtual" starting on the 20th:
 
> Larry, you've wanted to have class names used within a class be 
> virtual.  With various degrees of conviction across the synopses, 
> you've wanted classes defined within a class to be overridable, or all 
> classes referenced by a class to be overridable, speculating on 
> whether this is do-able.
> ...
> You'll be happy to know that not only is it do-able (once you know 
> what is and is not affected), but it will play a role in making the 
> type system F-bounds quantified. 


--John

Thread Previous


Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About