[Python-Dev] Re: Python-Dev Digest, Vol 7, Issue 45
Peter Harris
scav at blueyonder.co.uk
Wed Feb 25 16:00:23 EST 2004
Edward Loper wrote:
>Peter Harris wrote:
>
>
>>>* curry()
>>>
>>>* closure()
>>>
>>>* partial()
>>>
>>>* partial_apply()
>>>
>>>* delayed()
>>>
>>>* other ?
>>>
>>>
>
>bind() and bindargs() seem pretty reasonable to me. But if you don't
>like those, then how about fixargs() or fix_args()? That gets across
>the message that we're generating a new function that fixes the values
>of a subset of the arguments.
>
>Side note: I think that the following code will have unexpected behavior
>with the current implementations:
>
> >>> def f(x,y,z): return (x,y,z)
> >>> g = f.bind(y=3)
> >>> print g(1,2)
>TypeError: f() got multiple values for keyword argument 'y'
>
>(I would have expected this to return (1,3,2).)
>
>Of course, there's not really any way around it without using
>inspection, and even then you can't really inspect argument lists for
>builtins. But it might be worth noting in the docs the circumstances
>under which it's appropriate to bind w/ keyword args.
>
>-Edward
>
>
>
Well, I'm coming to like partial(), because it's short enough, and
relates to
the term 'partial application'.
I don't like verb-based names for this, because you are not doing an action
so much as creating a thing. A noun would be splendid if an appropriate
one could be found; failing that, an adjective will do, as it _implies_
a noun.
So partial() evaluates as a 'partial' something, but bind() looks like
it's binding
something but not necessarily focusing attention on the fact that what
we are
making is an object.
Peter Harris
More information about the Python-Dev
mailing list