On Fri, Jul 08, 2005 at 08:28:34PM +0200, Robin Redeker wrote:
: On Fri, Jul 08, 2005 at 10:07:24AM -0400, Stevan Little wrote:
: > I have never understood what is wrong with this:
: > 
: > method foo ($self: $bar) {
: >     $self.baz()
: > }
: Thats a fine option to have.
: But therecomes another question to my mind:
: what do i get with writing 'method' instead of
: 'sub'? is it just for seperating subroutines and methods optically
: or is there a deeper reason?

Several deeper reasons.  Though I quibble at characterizing the optical
reason as un-deeper when it might in fact be the deepest reason of all,
or at least closely related to very deep psychological reasons.

Off the top of my head:

    Subs are never inherited.
    Subs are not candidates for indirect object method calls.
    Perl will only call "sub new" when called as a subroutine.
    Subs create list operators, while methods don't.
    Method calls are allowed to be argumentless.
    Methods have access to instance variables.
    Mutating/nonmutating methods can be generated from each other.
    Explicit method declaration allows implicit invocant declaration.
    Distinguishing multi method from multi sub allows different strategies.

: > Why does it have to be some sugared syntax when you can just simple  
: > name it in the parameter list?
: Yes, but there seem to be quite some people who want
: a 'cool' syntax for it. (ie. ./method ()).

I wasn't thinking 'cool', I was thinking 'visually distinctive and
mnemonic'.  I actually think o. is cooler.

: No syntax at all, like in C++ just method() would
: be the shortest. But larry says no, and everyone seems to
: agree.

Just to quibble again, I didn't just say 'no'.  I also said,

    use self "";

And no, everyone doesn't seem to agree.  :-)


Reply via email to