Skip Montanaro wrote:
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
So reaplce the plus sign with an asterisk ...
regards Steve -- Meet the Python developers and your c.l.py favorites March 23-25 Come to PyCon DC 2005 http://www.python.org/pycon/2005/ Steve Holden http://www.holdenweb.com/ -- http://mail.python.org/mailman/listinfo/python-list