Chris Uppal wrote: > > But, as a sort of half-way, semi-formal, example: consider the type > environment > in a Java runtime. The JVM does formal type-checking of classfiles as it > loads > them. In most ways that checking is static -- it's treating the bytecode as > program text and doing a static analysis on it before allowing it to run (and > rejecting what it can't prove to be acceptable by its criteria). However, it > isn't /entirely/ static because the collection of classes varies at runtime in > a (potentially) highly dynamic way. So it can't really examine the "whole" > text of the program -- indeed there is no such thing. So it ends up with a > hybrid static/dynamic type system -- it records any assumptions it had to make > in order to find a proof of the acceptability of the new code, and if > (sometime > in the future) another class is proposed which violates those assumptions, > then > that second class is rejected.
I have to object to the term "hybrid". Java has a static type system. Java has runtime tags and tag checks. The two are distinct, and neither one is less than complete, so I don't think "hybrid" captures the situation well. Marshall -- http://mail.python.org/mailman/listinfo/python-list