A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from http://mail.python.org/pipermail/python-list/2005-September/301989.html below:

Parametric Polymorphism

Parametric Polymorphism Parametric PolymorphismPierre Barbier de Reuille pierre.barbier at cirad.fr
Mon Sep 26 05:59:08 EDT 2005
Kay Schluehr a écrit :
> Catalin Marinas wrote:
> 
>>Hi,
>>
>>Sorry if this was previously discussed but it's something I miss in
>>Python. I get around this using isinstance() but it would be cleaner
>>to have separate functions with the same name but different argument
>>types. I think the idea gets quite close to the Lisp/CLOS
>>implementation of methods.
> 
> 
> Guido himself addressed multimethods in his Artima blog:
> 
> http://www.artima.com/weblogs/viewpost.jsp?thread=101605
> 
> See also the subsequent discussion about subtyping problems. 
> 
> Kay
> 

Well, as said in the comments, what he propose is *not* working !
You cannot look for the type of the argument using a dictionnary of
definition types, it just doesn't work because of polymorphism.

Now suppose you have two classes A and B, B subclassing A.
If you define :

@method(A)
def myfct(f):
  do_something_with_f

Then, you want it to work with any object of type B ... but with either
Guido's or this implementation, it won't ! The problem is much more
complex and cannot be solved in constant (or even linear) time. What I
read concerning Lisp is they use a cache to optimize method resolution.

Pierre

More information about the Python-list mailing list

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4