[Python-Dev] PEP 443 - Single-dispatch generic functions
Antoine Pitrou
solipsis at pitrou.net
Thu May 23 09:14:35 CEST 2013
On 2013年5月23日 02:33:57 -0400
Devin Jeanpierre <jeanpierreda at gmail.com> wrote:
> On Thu, May 23, 2013 at 2:04 AM, Antoine Pitrou <solipsis at pitrou.net> wrote:
> > On 2013年5月23日 12:12:26 +1000
> > Nick Coghlan <ncoghlan at gmail.com> wrote:
> >> The binary operators can be more accurately said to use a complicated
> >> single-dispatch dance rather than supporting native dual-dispatch.
> >
> > Not one based on the type of a single argument, though.
>> Why not?
>> I'd expect it to look something like this:
>> @singledispatch
> def ladd(left, right):
> return NotImplemented
>> @singledispatch
> def radd(right, left):
> return NotImplemented
>> def add(left, right):
> x = ladd(left, right)
> if x is not NotImplemented:
> return x
> x = radd(right, left)
> if x is not NotImplemented:
> return x
> raise TypeError
>> Then instead of defining __add__ you define an overloaded
> implementation of ladd, and instead of defining __radd__ you define an
> overloaded implementation of radd.
Well, I don't think you can say add() dispatches based on the type of a
single argument. But that may be a question of how you like to think
about decomposed problems.
Regards
Antoine.
More information about the Python-Dev
mailing list