[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