PEP 309 (Partial Function Application) Idea
Reinhold Birkenfeld
reinhold-birkenfeld-nospam at wolke7.net
Fri Mar 11 17:51:03 EST 2005
Steven Bethard wrote:
> Chris Perkins wrote:
>> Random idea of the day: How about having syntax support for
>> currying/partial function application, like this:
>>
>> func(..., a, b)
>> func(a, ..., b)
>> func(a, b, ...)
>>
>> That is:
>> 1) Make an Ellipsis literal legal syntax in an argument list.
>> 2) Have the compiler recognize the Ellipsis literal and transform the
>> function call into a curried/parially applied function.
>>
>> So the compiler would essentially do something like this:
>>
>> func(a, ...) ==> curry(func, a)
>> func(..., a) ==> rightcurry(func, a)
>> func(a, ..., b) ==> rightcurry(curry(func,a), b)
>>
>> I haven't though this through much, and I'm sure there are issues, but
>> I do like the way it looks. The "..." really stands out as saying
>> "something is omitted here".
>
> Interesting idea, but I have a feeling that it probably won't fly for a
> couple of reasons:
>
> (1) The existing use of Ellipsis doesn't have anything to do with your
> suggested use. I think people are generally opposed to giving
> keywords/symbols in Python two very different meanings. This is one of
> the reasons Guido never liked the "a, b, *c = iterable" syntax.
>
> (2) Emphasis recently on python-dev has been away from syntax changes
> and towards expansion of the standard library. You would have to make a
> _very_ good case that the new syntax is merited.
>
> Generally I do like the idea -- I think a lot of the cases that people
> have made for keeping lambda could be discarded with something like
> this... But it'd need an extremely well thought out PEP (and an
> implementation of course) and even then, I wouldn't get my hopes up.
I like it, and if it helps to convince people that it is okay to get rid
of lambda, perhaps Guido will like it too.
What about proposing it on python-dev?
Reinhold
More information about the Python-list
mailing list