>I would be happier of we just let the whole nightmare that is the
>indirect object syntax die the death it deserves! :-)
If functions, not indirect object methods, *always* took parens,
then I think without deep thought that this, too, would solve that
problem--amongst others. I'm not ready to commit to advocating
this, though. This is a hard enough problem to require more than
a purely reactive response.
>Methods aren't subroutines and I see no benefit -- and many drawbacks --
>in syntactically confusing the two.
Currently you cannot know (in isolation) what's happening with:
X Y;
This I certainly find quite disturbing. I often think that should
much prefer that it be
X(Y);
or
Y->X;
respectively, yet even that is not sufficient for some cases,
where
Y::->X
instead. Blech.
Even with
X Y Z;
you don't know whether that's
Y->X(Z)
or
X(Y(Z))
or whatnot.
But at some level, I don't think I'd stress to people that "subroutines
aren't methods". I like to say that methods are a special way of
invoking a subroutine. Certainly in both cases, you have things
that take arguments and return values, have their own scope, etc.
Only two things differ: inheritance and invocant access.
But given that these *do* differ, it seems reasonable to require
different things to have different syntaxes. I hate not knowing
what's going on.
But I will *not* relish typing
STDERR->print("darn")
--tom