Dag, I definitelly like the whole idea... Have you considered supporting the equivalent to C++ template specialization?
On 5/22/08, Dag Sverre Seljebotn <[EMAIL PROTECTED]> wrote: > Stefan wrote: > > Hi, > > > > Dag Sverre Seljebotn wrote: > >> http://wiki.cython.org/enhancements/compiledducktyping > > > > Isn't the overloading stuff what PEP 3124 is heading for? > > > > http://www.python.org/dev/peps/pep-3124/ > > > > I think parameter annotations would make sense here. > > > Compile-time duck typing is not really just overloading, it is overloaded > template methods, i.e. like this in C++: > > template <typename A, typename B> > A max(A a, B b) {...} > > (Unlike overloading, compile-time ducktyping has no Java equivalent). > > It is *implemented* by having multiple overloaded functions internally, > but making overloading possible is an (intended) side-effect. PEP 3124 can > very easily be implemented in addition on top of my proposal, but I > believe it too is orthogonal to what I'm proposing. > > The idea was to kill many birds with one rock: > > - Real Cython macros > > - Possible to drop typing in a lot of places (brings us closer to type > inference), leading to very convenient and easy optimizations. This will > just work: > > def max(a, b): return a if a >= b else b > > and work "like in Python" without any performance penalties or change in > behaviour from coercing back and forth to object (if you just skimmed the > proposal you might have missed the controversial bit where I suggested > that "def" should just change behaviour (in a backwards-compatible way > though), rather than introducing a "duckdef"). > > - Overloading (as in, different behaviour for different object types) is > sort-of made possible through the use of "isinstance" like in (current!) > Python, so there is less to learn. If we want to, PEP 3124 can be > implemented in addition (with the same spec, i.e. map it to a list of > isinstance tests). > > > Dag Sverre > > > _______________________________________________ > Cython-dev mailing list > [email protected] > http://codespeak.net/mailman/listinfo/cython-dev > -- Lisandro Dalcín --------------- Centro Internacional de Métodos Computacionales en Ingeniería (CIMEC) Instituto de Desarrollo Tecnológico para la Industria Química (INTEC) Consejo Nacional de Investigaciones Científicas y Técnicas (CONICET) PTLC - Güemes 3450, (3000) Santa Fe, Argentina Tel/Fax: +54-(0)342-451.1594 _______________________________________________ Cython-dev mailing list [email protected] http://codespeak.net/mailman/listinfo/cython-dev
