Marshall wrote: > > I am having a hard time with this very broad definition of aliasing.
How about this definition: Consider three variables, i, j, and k, and a functional equivalence predicate (EQUIVALENT(i, j) returns true if for every pure function F, F(i) = F(j)). Now suppose i and j are EQUIVALENT at some point, then a side effecting function G is invoked on k, after which i and j are no longer equivalent. Then there is aliasing. This is still a little awkward, but there are three main points: 1. Aliasing occurs between variables (named objects). 2. It is tied to the notion of equivalence. 3. You can detect it when a procedure that has no access to a value can nonetheless modify the value. In a call-by-value language, you cannot alias values directly, but if the values are aggregate data structures (like in Java), you may be able to modify a shared subcomponent. -- http://mail.python.org/mailman/listinfo/python-list