Next step after pychecker
Skip Montanaro
skip at pobox.com
Tue Feb 1 22:11:32 EST 2005
Francis> "Every well-formed expression of the language can be assigned a
Francis> type that can be deduced from the constituents of the
Francis> expression alone." Bird and Wadler, Introduction to Functional
Francis> Programming, 1988
Francis> This is certainly not the case for Python since one and the
Francis> same variable can have different types depending upon the
Francis> execution context. Example :
Francis> 1- if a is None:
Francis> 2- b = 1
Francis> 3- else:
Francis> 4- b = "Phew"
Francis> 5- b = b + 1
Francis> One cannot statically determine the type of b by examining the
Francis> line 5- alone.
Do you have an example using a correct code fragment? It makes no sense to
infer types in code that would clearly raise runtime errors:
>>> "Phew" + 1
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: cannot concatenate 'str' and 'int' objects
Also, note that the type assigned to an expression may be nothing more than
"object". Clearly that wouldn't be very helpful when trying to write an
optimizing compiler, but it is a valid type.
Skip
More information about the Python-list
mailing list