On Sat, Oct 21, 2006 at 07:10:21PM +0200, Leopold Toetsch wrote:
> Am Donnerstag, 19. Oktober 2006 23:19 schrieb Patrick R. Michaud:
> >     .HLL 'pge', ''
> >
> >     .sub __onload :load
> >         $P0 = newclass 'Exp'
>   [...]
> >         $P0 = subclass 'Exp', 'Closure'
> >         # ...
> >     .end
> > [...]
> > So, this brings me to my question:  What is the official
> > "best practice" pattern for HLLs to create their own classes
> > such that we avoid naming conflicts with existing classes
> > in Parrot and other HLLs?
> 
>   .HLL 'pge', ''
> 
> is implying the toplevel namespace ['pge']. The C<newclass 'Exp'> therfore is 
> created as ['pge';'Exp']. But you are subclassing that to an existing 
> (because unqualified) 'Closure' name.
> 
> IMHO this should look like this:
> 
>   .HLL 'pge', ''
>   ...
>   cl = newclass 'Exp'     # ['pge'; 'Exp']
>   ...
>   .namespace ['Exp']      # ['pge'; 'Exp']
>   ...
>   scl = subclass 'Exp', ['Exp'; 'Closure']  # ['pge'; 'Exp'; 'Closure']
>   ...

I strongly disagree.  I don't think that a subclass should have to
be named as a sub-namespace of its parent class.

Put another way, if Num isa Object, and Int isa Num,
does that mean that I would have to do...?

    .hll 'perl6', ''

    $P0 = newclass 'Object'
    $P1 = subclass 'Object', ['Object'; 'Num']
    $P2 = subclass ['Object'; 'Num'], ['Object'; 'Num'; 'Int']

Normally I would expect 'Object', 'Int', and 'Num' to have their
own top-level namespaces within the HLL namespace, and not require
classnames to always include the list of parent classes.

Pm

Reply via email to