Chris Uppal wrote: > It's worth noting, too, that (in some sense) the type of an object can change > over time[*]. That can be handled readily (if not perfectly) in the informal > internal type system(s) which programmers run in their heads (pace the very > sensible post by Anton van Straaten today in this thread -- several branches > away), but cannot be handled by a type system based on sets-of-values (and is > also a counter-example to the idea that "the" dynamic type of an object/value > can be identified with its tag). > > ([*] if the set of operations in which it can legitimately partake changes. > That can happen explicitly in Smalltalk (using DNU proxies for instance if the > proxied object changes, or even using #becomeA:), but can happen anyway in > less > "free" languages -- the State Pattern for instance, or even (arguably) in the > difference between an empty list and a non-empty list).
Dynamic changes in object behaviour are not incompatible with type systems based on sets of values (e.g. semantic subtyping). There are some tricky issues in making such a system work, and I'm not aware of any implemented language that does it currently, but in principle it's quite feasible. For a type system that can handle dynamic proxying, see <http://www.doc.ic.ac.uk/~scd/FOOL11/FCM.pdf>. -- David Hopwood <[EMAIL PROTECTED]> -- http://mail.python.org/mailman/listinfo/python-list