[Python-Dev] PEP 443 - Single-dispatch generic functions (original) (raw)
Nick Coghlan ncoghlan at gmail.com
Thu May 23 09:34:59 CEST 2013
- Previous message: [Python-Dev] PEP 443 - Single-dispatch generic functions
- Next message: [Python-Dev] PEP 443 - Single-dispatch generic functions
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
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>
- Previous message: [Python-Dev] PEP 443 - Single-dispatch generic functions
- Next message: [Python-Dev] PEP 443 - Single-dispatch generic functions
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]