[Python-Dev] PEP 443 - Single-dispatch generic functions

Nick Coghlan ncoghlan at gmail.com
Thu May 23 09:34:59 CEST 2013


On 23 May 2013 16:37, "Devin Jeanpierre" <jeanpierreda at gmail.com> wrote:
>
> On Thu, May 23, 2013 at 2:04 AM, Antoine Pitrou <solipsis at pitrou.net>
wrote:
> > On Thu, 23 May 2013 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.

That's the basic idea, but there's the extra complication that if
type(right) is a strict subclass of type(left), you try radd first.

Cheers,
Nick.

>
> -- Devin
> _______________________________________________
> Python-Dev mailing list
> Python-Dev at python.org
> http://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe:
http://mail.python.org/mailman/options/python-dev/ncoghlan%40gmail.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20130523/6bedcf68/attachment-0001.html>


More information about the Python-Dev mailing list