[Python-Dev] PEP 443 - Single-dispatch generic functions (original) (raw)

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