On Thu, May 22, 2008 at 11:35 AM, 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).
I was hoping this would be powerful enough to write generic optimized mathematics code for Sage, but it doesn't do enough for that. For Sage, a function that takes "double" arguments might include: a = b + c the corresponding function that takes "mpz_t" arguments would have: mpz_add(a, b, c) the corresponding function with "mpfr_t" arguments would have: mpfr_add(a, b, c, GMP_RNDN) for integers mod p (for sufficiently small p), it would be: a = (b + c) % p On the other hand, different subclasses of object (like Integer and RealNumber) should probably not have separate versions of the function compiled for them. Maybe it's not worth even trying to think about supporting this use case with this proposal--anything that works would end up being significantly more complicated than what you're talking about, probably. But it would be nice to at least avoid making it harder to implement this complicated thing in the future. Carl _______________________________________________ Cython-dev mailing list [email protected] http://codespeak.net/mailman/listinfo/cython-dev
