Re: RFC 161 (v2) OO Integration/Migration Path

[email protected] (Dan Sugalski)
Newsgroups perl.perl6.language.objects
Message-ID <[email protected]>
At 11:28 AM 8/28/00 -0700, Steve Fink wrote:
>Dan Sugalski wrote:
> >
> > If the vtable stuff goes into the core perl engine (and it probably will,
> > barring performance issues), then what could happen in the
> >
> >   my Foo $bar;
> >
> > case would be that all the vtable functions for Foo are taken as specially
> > named subs/methods in the Foo package. So, for example, if you did:
> >
> >   print $bar;
> >
> > then the core would vector through Foo's STRINGIFY sub, or if you did a:
> >
> >   $baz = $bar + 12;
> >
> > the core would call Foo's ADD sub.
>
>But this shouldn't necessarily be Foo::ADD, right?
>
>my Foo $foo = BlueFoo->new();
>print $foo + 3;
>
>should call BlueFoo::ADD, not Foo::ADD, no?

Yes. (Assuming BlueFoo->new returns a variable blessed into BlueFoo, of 
course) Presumably each package will have a prebuilt vtable attached to it 
that gets smacked into any variable marked as blessed into it.

>  (where BlueFoo isa Foo). But
>if so, then it seems like my Foo $x and my Bar $x are equivalent -- both
>of them just mean "use my actual class to look up vtable methods", maybe
>with some type checking to ensure that only subclasses of the declared
>class are put into $x.

More or less, yep. It'll get funkier for builtin types, I think--if you do:

   my int %somehash;

then stick a non-int into a hash entry, %somehash will probably get 
promoted to a full scalar hash rather than an int one.

>But then what does my $x = BlueFoo->new(); print
>"$x" do, assuming there is a BlueFoo::STRINGIFY? Print
>"BlueFoo=HASH(0x0b38134)"?

That's a good question. Not my call--that's language design. (Says the man 
neatly ducking the issue... :)

>As for non-vtable methods, were you planning on making
>
>my Foo $foo; $foo->method_not_in_Foo_package();
>
>a compile-time error?

Also a language issue. There are AUTOLOAD things to take into account, 
amongst other things.

					Dan

--------------------------------------"it's like this"-------------------
Dan Sugalski                          even samurai
[email protected]                         have teddy bears and even
                                      teddy bears get drunk
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.