On 23 maj 2013, at 01:16, Terry Jan Reedy <tjre...@udel.edu> wrote:

> I like the general idea. Does you have any specific stdlib use cases in mind?
> 
> I thought of pprint, which at some point dispatches on dict versus 
> set/sequence, but overall it seems more complicated than mere arg type 
> dispatch.

I want to make pprint extensible for 3.4 and PEP 443 started out as an idea to 
introduce a uniform API for the boilerplate I'm going to need anyway. It turned 
out the idea has been around for years.

> Unittest.TestCase.assertEqual mostly (but not completely) uses first arg 
> dispatch based on an instance-specific dict, and it has an custom instance 
> registration method addTypeEqualityFunc. (Since each test_xxx runs in a new 
> instance, a registration for multiple methods has to be done either in a 
> setup method or repeated in each test_method.)

If a registration mechanism is already in place, it will probably need to stay 
(backwards compatibility). The feasability of refactoring to @singledispatch 
will have to be considered on a case-by-case basis.

On a more general note, I'm sure that @singledispatch won't cover every use 
case. Still, PJE implemented both pkgutil.simplegeneric and PEAK-Rules because 
the former is the proverbial 20% that gets you 80% there. For those use cases 
the simplicity and transparency provided by a basic solution are a virtue. This 
is what PEP 443 targets.

If @singledispatch turns out so successful that we'll find ourselves longing 
for multiple dispatch or predicate-based dispatch in the future, I'm sure 
there's still going to be enough PEP numbers free. The @singledispatch name has 
been chosen to ensure there's no name clash in that case (thanks Nick for 
suggesting that!).

-- 
Best regards,
Łukasz Langa

WWW: http://lukasz.langa.pl/
Twitter: @llanga
IRC: ambv on #python-dev

_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to