Pascal Costanza <[EMAIL PROTECTED]> writes: > Chris Smith wrote: > >> While this effort to salvage the term "type error" in dynamic >> languages is interesting, I fear it will fail. Either we'll all >> have to admit that "type" in the dynamic sense is a psychological >> concept with no precise technical definition (as was at least hinted >> by Anton's post earlier, whether intentionally or not) or someone is >> going to have to propose a technical meaning that makes sense, >> independently of what is meant by "type" in a static system. > > What about this: You get a type error when the program attempts to > invoke an operation on values that are not appropriate for this > operation. > > Examples: adding numbers to strings; determining the string-length of > a number; applying a function on the wrong number of parameters; > applying a non-function; accessing an array with out-of-bound indexes; > etc.
Yes, the phrase "runtime type error" is actually a misnomer. What one usually means by that is a situation where the operational semantics is "stuck", i.e., where the program, while not yet arrived at what's considered a "result", cannot make any progress because the current configuration does not match any of the rules of the dynamic semantics. The reason why we call this a "type error" is that such situations are precisely the ones we want to statically rule out using sound static type systems. So it is a "type error" in the sense that the static semantics was not strong enough to rule it out. > Sending a message to an object that does not understand that message > is a type error. The "message not understood" machinery can be seen > either as a way to escape from this type error in case it occurs and > allow the program to still do something useful, or to actually remove > (some) potential type errors. I disagree with this. If the program keeps running in a defined way, then it is not what I would call a type error. It definitely is not an error in the sense I described above. -- http://mail.python.org/mailman/listinfo/python-list