Aaron Brady wrote:
Where functions are first-class objects, a bare function object isn't distinguishable either from its call.
That depends not on whether functions are first-class objects, but on the *syntax* of function invocation vs. function reference. It just so happens than in Python, the syntax for the latter is the bare function identifier. But it wouldn't have to be -- you could use "@foo" or "{foo}" or "ref foo" or (as in RB) "AddressOf foo" or any number of other alternatives to accomplish the same thing, and functions would still be first-class objects.
I'll grant that having any such syntax makes them *odd* first-class objects, since all other objects are referred to with a naked identifier, and invoked (if they are callable) with some other syntax. It'd be weird and inconsistent to have functions turn that around. But, despite being inconsistent, it might still be sensible, based on the observation that we generally need to invoke methods a lot more often than we need to get a reference to them.
> I'm granting that it's useful
to return values a lot. For example: a= f could mean either, 'a= f' or 'a= f()'. Once again the return values save the day.
I think I agree (if I follow you correctly). But then some other syntax would be needed for when you really mean "a=f" (i.e., make 'a' refer to the same function as 'f').
Best, - Joe -- http://mail.python.org/mailman/listinfo/python-list