J. Cliff Dyer
jcd at sdf.lonestar.org
Tue Feb 3 21:01:17 CET 2009
On Tue, 2009-02-03 at 08:33 -0700, Joe Strout wrote:
> J. Cliff Dyer wrote:
> > But what if your language allows functions to be used as first class
> > objects? (Mine does :))
> > x = Beep
> > Does that assign the name x to the Beep object or does it assign the
> > result of a Beep call to x?
> It assigns the result. To assign the name to the Beep object requires a
> bit of additional syntax; in RB, this would be
> x = AddressOf Beep
> > There's no virtue in making ridiculously simple things even simpler if
> > it makes the interesting things impossible.
> Of course. The goal is (or should be) to make the common things
> ridiculously simple, and make the uncommon things only somewhat less so.
> Even in Python, it is far more common to invoke a function than to
> need a reference to it. So invoking a function should be the thing that
> requires no extra syntax (even including "()"). Getting a reference to
> it, which is less common, should be the thing that requires more syntax.
Except that now you have introduced an inconsistency into python. What
does the following mean?
my_object = MyObject()
x = my_object
What if MyObject defines a method named __call__?
Now some objects are passed around using
x = my_object
while others require
x = AddressOf my_object
and the only way to tell which is which is to check the object for the
presence of a __call__ method.
This seems like a serious inconsistency to me.
> - Joe
More information about the Python-list