Typing system vs. Java

Alex Martelli aleaxit at yahoo.com
Tue Jul 31 18:33:13 CEST 2001


"Christian Tanzer" <tanzer at swing.co.at> wrote in message
news:mailman.996592198.30711.python-list at python.org...
"""
> poor programming on my part, but I can't even think how one would type a
> function like say:
>
>    def f(zs): return reduce( lambda x, y: x + y, zs )

Genericity (templates in C++) this is not a problem -- you get one
instance of `f` for each type `zs` you happen to apply `f` to.

Disclaimer: C++ templates don't allow different return types for such
functions, but that's a restriction of C++, not of genericity. IIRC,
"""

Beg pardon?

template<class A, class B>
A myfunction(const B& b)
{
    return b;
}

Maybe you mean that C++ doesn't *automatically INFER* A when
you just call myfunction(something)?  But, you CAN partially
specify myfunction<int>(something) [or, of course, totally
specify myfunction<int,double>(something)], if you have a
standard-compliant C++ compiler.

Back to Python -- programming in Python has always felt to
me a *LOT* like generic programming (e.g. with C++ templates)
in so many ways... of course, I was "steeped" in C++ generics
well before I met Python, so that may help explain this:-).

But, really, the only significant difference seems to me to
be that C++ instantiates its generics at compile-time (less
flexibility, some more syntax cruft, better runtime speed)
while Python works in a fully dynamic way, at runtime (some
errors are diagnosed a bit later, speed is not so great,
syntax is very lightweight and flexibility is nonpareil).

They're still very subjectively similar programming mindsets...
*signature-based polymorphism* dominates in either case!


Alex (Brainbench MVP for C++)






More information about the Python-list mailing list