Adding static typing to Python
QnickQm at alum.mit.edu
Wed Feb 20 05:38:31 CET 2002
In article <24c39b2c.0202191658.3fd74528 at posting.google.com>,
Alexander Jerusalem wrote:
> QnickQm at alum.mit.edu (Nick Mathewson) wrote in message
> news:<slrna74ssf.21s.QnickQm at localhost.localdomain>...
>> In article <24c39b2c.0202181531.187fad4c at posting.google.com>,
>> Alexander Jerusalem wrote:
>> > Has anyone heard of plans to add static type checking to Python?
>> Someone else has mentioned an old proposal of Guido's for adding
>> optional type declarations in order to help the compiler catch errors.
[... an example that eventually arrives at a type like ...]
>> And you aren't using _all_ of the sequence protocol: just iteration...
>> (A, B) -> str s.t. A has __iter()__ -> C
>> s.t. C has next() -> D (or raises StopIteration)
>> s.t. D has __eq__(B) and repr() -> str
>> IMNSHO, some kind type inference is the only tractable answer.
>> And-what-if-repr-doesn't-return-a-string?-ly yrs,
> You argue that there are cases where static typing gets in your way,
> where it makes programs less flexible.
Well, not quite. I argue that assigning types to even trivial Python
programs is a delicate and tricky business, and that the static types
implicit in a typical Python function are tremendously complex.
This _isn't_ an argument against optional static types for Python: I
believe in them too. This is just an explanation of why they haven't
been done _yet_:
1) Typical type declarations for Python will be more complex than
those of most other popular languages.
2) Therefore, type inference is almost certainly necessary.
3) Because of 1 and 2, optional static typing for Python will
involve a lot of work. :)
Of course, this isn't to say that it won't or shouldn't get done: just
that the cost portion of the cost/benefit here is very high---and the
free time among the people who know enough about Python in particular
and type systems in general is quite low.
Nick Mathewson <Q nick Q m at alum dot mit dot edu>
Remove Q's to respond. No spam.
More information about the Python-list