What is Expressiveness in a Computer Language
david.nospam.hopwood at blueyonder.co.uk
Wed Jun 21 17:29:30 CEST 2006
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
David Hopwood <david.nospam.hopwood at blueyonder.co.uk>
More information about the Python-list