On Sun, 27 Aug 2000, Nathan Torkington wrote:

> Perl6 RFC Librarian writes:
> > For example, rather than:
> > 
> >  my int $intVal = 0;
> > 
> > you would say:
> >  my $intVal = 0;
> >  $intVal->asInt;
> > Or possibly even:
> >  my $invVal->asInt = 0;
> > for simplicity.
> 
> Do you mean that when we write:
> 
>   my int $intVal = 0;
> 
> it gets turned into OO stuff?  Or do you mean that we won't be
> writing
> 
>   my int $intVal = 0;
> 
> any more?  I don't like the latter option.  It would seem to require
> more typing to allow something that a minority of people will use.
> 
> I'd rather than any "variables are represented by objects" magic
> be done behind the scenes.

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.

As a sort of handy side-effect, you get overload's functionality thrown in
as a gimmie, assuming things like math operators are part of the
vtable. (Which they probably will be, though once again no promises)

Default actions would likely be a fall-back to the 'base' operations or
generic failure, depending on the settings for your package.

                                        Dan

Reply via email to