[Python-Dev] Re: "groupby" iterator

Phillip J. Eby pje at telecommunity.com
Wed Dec 3 12:29:46 EST 2003


At 07:04 PM 12/3/03 +0200, Christos Georgiou wrote:

>A minor correction: the Voodoo approach handles fine method calls by
>defining a __call__ method in the Voodoo class;

__call__ is needed for the resulting object to be callable.


>it can't handle
>*function* calls in an elegant way:
>
>lambda x: x.startswith("text")
>This works fine as:
>Voodoo().startswith("text")

Voodoo().startswith("text") is equivalent to (lambda x: 
x.startswith)("text"), which is not the same thing.



>lambda x: math.sin(x)
>This needs gross syntax, the following does not work:
>math.sin(Voodoo())

That too, but also method calls.  Basically, once you get past really 
simple expressions, the whole thing collapses under its own weight.

Ironically, it would be easy to do this with generic functions, since one 
would simply define a methods for the case 'math.sin(Voodoo)' that returns 
lambda x: math.sin(x).

(Hm.  This gives me an entirely unrelated idea about how to unify object 
methods and generic functions in Python using "curried 
generics".  Interesting.  And the Voodoo() aka 'arg()' concept could be 
applied to predicate dispatching as well.)




More information about the Python-Dev mailing list