Inner functions and outer 'this' (Re: That hash symbol)

Allen Wirfs-Brock allen at
Wed Mar 30 09:39:49 PDT 2011

On Mar 30, 2011, at 5:06 AM, Sam Tobin-Hochstadt wrote:

> On Tue, Mar 29, 2011 at 7:08 PM, Allen Wirfs-Brock
> <allen at> wrote:

> [snip]
>> Optionally allowing explicit use of an alternative receiver name is probably acceptable as long as there is a default name. The OO tradition is to distinguish the receiver by using a fixed distinguished name, not to provide a distinguish place for arbitrarily naming the receiver. Python and various lisp object systems allow arbitrary receiver naming, but they have arguably never been in the mainstream of object-oriented language design. If you take away the special meaning of "this" and you don't have alternative vocabulary such as Smalltalk does to talk about the "receiver" of a method then you don't have a simple common way to talk about "the object on which the method was invoked" and that is an essential concept in the OO tradition.
> Second, I think this is taking a pretty narrow view of the OO
> tradition.  In particular, writing Python (a fairly popular language,
> these days :) and Flavors (from the same decade as Smalltalk) out of
> the mainstream seems pretty extreme.
> -- 

Sam, I don't want to battle over this, but I think I had as good of an insider's view as anyone during the development of practical OO during its heydays in the 80's and 90's. The Lisp object dialects were at the fringes of the object-oriented world, they were invited to the family gathering but were largely in their own world .  Arguably Flavors and its Lisp cohorts had more influence on the emergence of AOP  than on the evolution of mainstream OO. Python was a late comer that only began to gain traction in the mid-90's.  It had no impact on classic OO thought or language designs.  Much bigger influences although never widely used were Simula 67 (obviously) and Eiffel. The most influential OO language all had static class declaration and a single distinguished way to refer to the current method receiver (self, this, Current).

BTW, Guido has a nice article on the how classes originally emerged in Python: 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the es-discuss mailing list