static type checking

Michael McLay (mclay@eeel.nist.gov)
Tue, 21 Mar 95 10:00:28 EST

Daniel W. Connolly had some intersting comments on Python in
http://www.w3.org/hypertext/WWW/People/Connolly/technologies/scheme48-review.html:

Scheme48 for collaborative Engineering?

> I see that there is work being done on some "infix" language or
> dialect of scheme. I like this idea, and I strongly suggest that it
> support a Modula-3/python style namespace, using
>
> import X, Y, Z
> import X as xx, Y as yy
> from X import a,b,c
>
> But for the purpose of static analysis, leave out python's:
>
> from X import *
>
> This doesn't address the issue of how to make effective use of
> existing bodys of code written in scheme. Hmmm....

...

and a bit latter in the paper he writes:

> saw some code in the scheme48 distribution that appeared to do static
> type checking of scheme programs. This looks interesting. At least
> with scheme, there is the possibility of static analysis and
> optimization, unlike tcl and python.

> Several descriptions of Scheme48 imply that scheme48 has a powerful
> and easy-to-use FFI. I have experience with the Tcl FFI, which is
> simple but limited because all data is represented as strings, and the
> Python FFI, which is powerful, but difficult to use (an unsuitable for
> multi-threaded programs) because of reference counting.

To bad that removing the * from the import statement would be a major
change in the language and would break just about everyones code.
Being able to write a static type checker for Python is a key
requirement for some application domains. Is there more than just the
* that makes static checking impractical?

Michael