develooper Front page | perl.perl6.language | Postings from August 2005

$object.meta.isa(?) redux

Thread Next
From:
Stevan Little
Date:
August 9, 2005 14:09
Subject:
$object.meta.isa(?) redux
Howdy,

I wanted to make sure this question had a chance to get addressed, so I 
am seperating it from the other thread which has digressed into the 
depths of the metamodel (much to my delight too).

So..., as described in the other thread, the following statements are 
true about the metamodel.

1) MetaClass is a subclass of Object
2) MetaClass is an instance of MetaClass

So the following code should be true (given a random instance $obj).

   $obj.meta.isa(MetaClass);
   $obj.meta.isa(Object);

Because after all, the object returned from $obj.meta should be a 
MetaClass instance right?

However, Syn/Apoc 12 shows that the following is true if $foo is an 
instance of the Foo class.

   $foo.meta.isa(Foo)

And that $foo.isa(Foo) actually is just an alias for $foo.meta.isa(Foo).

So I am sure you can see my problem here.

The p5 prototype currently handles it as such:

   $foo->isa(Foo) # returns true if $foo is an instance of Foo
   $foo->meta->isa(MetaClass) # returns true since $foo->meta returns a 
MetaClass instance
   $foo->meta->is_a(Foo) # returns true, note the added '_'

Personally I am not a fan of the 'is_a' name, I just did it one day, 
and it sort of stuck. But I do think we need to find a way to 
differentiate between the two questions:

- What class are you an instance of?
- What class are you describing?

The first question can be asked of anything which inherits from Object. 
The second question is really only relevant to MetaClass instances.

Thoughts, Comments, Suggestions?

Thanks,

- Stevan


Thread Next


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