Damian Conway:
# Scott wrote:
#
# > Actually, I think it becomes:
# >
# > sub foo is method {
# > my $old = .foo;
# > .foo = shift if @_;
# > return $old;
# > }
# >
# > But, I could be wrong. Any Damians care to enlighten? :-)
#
# Well, I'm not a Damian, but I play one on perl6-language. ;-)
Well, then, where's a *real* Damian? :^)
# The final syntax for new-style Perl6 OO is currently "in flux", or
# perhaps we should say: "its superposition has yet to collapse to a
# stable eigenstate". Larry has ideas, I have ideas, and I'm working on
# integrating them into a coherent proposal.
#
# However, I don't think the above syntax will be it. I think
# it would likely
# be closer to:
#
# class Demo {
#
# my $.foo;
#
# method foo {
# my $old = $.foo;
# $.foo = @_[1] if @_ > 1;
# return $old;
# }
# }
So it is gonna be C<class IDENT [is property_list] BLOCK>? Hurray!
I assume we're going to recycle 'my' and 'our' to be 'instance' and
'class'--is that correct?
# Though, in fact, the idiom in Perl 6 would probably be to use
# just use lvalue methods:
#
# class Demo {
#
# my $.foo;
#
# method foo is lvalue {
# return $.foo
# }
# }
Will that be lvalue or rw? I could see it being rw, to keep the number
of intrinsic properties to a minimum, and since it's a nice analogy to
rw parameters. (Plus we might want to reserve lvalue for more magical
lvalue tricks--sort of a poor man's tie().)
# Nor am I yet convinced of the need for a separate
# C<$.attribute> syntax,
# so it *might* just be:
#
# class Demo {
#
# my $foo;
#
# method foo is lvalue {
# return $foo;
# }
# }
What if we have an instance variable $foo and a global $foo, and we want
to access the global?
# The unary dot operator would only be used for method calls:
#
# method bar {
# my $realfoo = .foo;
# .foo = 'bar';
# .baz();
# .foo = $realfoo;
# }
#
# to avoid the endless calls to self():
#
# method bar {
# my $realfoo = self.foo;
# self.foo = 'bar';
# self.baz();
# self.foo = $realfoo;
# }
Are we still gonna be able to pick what we call the current instance?
>From previous programming languages, I'm a lot more comfortable with $me
or $this than $self. (Yeah, it's a little thing, but it's something I
*liked* about Perl 5's OO--it showed how you had flexibility. And I
*like* that flexibility, dammit!) Perhaps:
method bar {
...
}
will assume $self, but:
method bar($me : *@_) {
...
}
will use $me instead.
# Aaron then asked:
#
# > Also, the "sub .foo" syntax is one I've now seen in an
# apocolypse and
# > the good ensign's article, so I'm not sure where "sub
# foo is method" is
# > coming from.
#
# Those alternate universe syntaxes coming from quantum fluctuations in
# the uncollapsed syntax superposition. I'll soon be firing a polaron
# burst through the main deflector in a desparate attempt to stabilize
# this anomoly before it destroys Perl 6.
All these Star Trek references are threatening to make my warp core
breach... :^)
--Brent Dax
[EMAIL PROTECTED]
Configure pumpking for Perl 6
When I take action, I�m not going to fire a $2 million missile at a $10
empty tent and hit a camel in the butt.
--Dubya