Joachim Durchholz wrote: > Marshall schrieb: > > immutable = can't change > > vary-able = can change > > > > Clearly a contradiction in terms. > > Not in mathematics.
So stipulated. However, it *is* a contradiction in English. Now, we often redefine or narrow terms for technical fields. However, when we find ourselves in a situation where we've inverted the English meaning with the technical meaning, or ended up with a contradiction, it ought to give us pause. > The understanding there is that a "variable" varies - not over time, but > according to the whim of the usage. (E.g. if a function is displayed in > a graph, the parameter varies along the X axis. If it's used within a > term, the parameter varies depending on how it's used. Etc.) > > Similarly for computer programs. > Of course, if values are immutable, the value associated with a > parameter name cannot vary within the same invocation - but it can still > vary from one invocation to the next. Again, stipulated. In fact I conceded this was a good point when it was first mentioned. However, we generally refer to parameters to functions as "parameters"-- you did it yourself above. What we generally (in programming) call variables are locals and globals. If the languages supports an update operation on those variables, then calling them variables makes sense. But "variable" has become such a catch-all term that we call public static final int FOO = 7; a variable, even though it can never, ever vary. That doesn't make any sense. If we care about precision in our terminology, we ought to distinguish among parameters, named values that support destructive update, named values that don't support destructive update, and possibly other things. Marshall -- http://mail.python.org/mailman/listinfo/python-list