Chaim Frenkel <[EMAIL PROTECTED]> writes:
> JV> An attribute would
>
> JV> - require the sub to be consequent in what it returns;
>
> I can't parse that line.
With an lvalue atttribute, a sub is assumed to always return an
lvalue. The lreturn proposal makes it possible for a sub to determine
at run time whether it's going to return an lvalue or something else.
>
> JV> - require the sub to be predeclared before it can be used;
>
> lvalueness seems to be appropropriate.
The point is that the sub needs to be predeclared.
> These two should have different actions.
>
> $foo = &foo;
> &foo = $foo;
>
> Perl needs a value for one, and a reference for the other.
I'm not sure I understand what you trying to say here. Please explain.
> JV> - make it unfeasable for methods.
>
> Why? All methods for the same OO hierarchy should have the same signature.
Assume class Foo has a method m that returns a scalar lvalue, and
class Bar has a method m that returns an array lvalue. The following
code is now perfectly legal (though weird):
my $o = $some_condition ? Foo::->new() : Bar::->new();
$o->m = another_sub();
'another_sub' calls wantarray. What should it return?
-- Johan