What is a type error?
cdsmith at twu.net
Mon Jun 26 20:53:42 CEST 2006
Pascal Costanza <pc at p-cos.net> wrote:
> Chris Smith wrote:
> > Of course zero is not appropriate as a second argument to the division
> > operator! I can't possibly see how you could claim that it is. The
> > only reasonable statement worth making is that there doesn't exist a
> > type system in widespread use that is capable of checking this.
> ...and this is typically not even checked at the stage where type tags
> are checked in dynamically-typed languages. Hence, it is not a type
> error. (A type error is always what you define to be a type error within
> a given type system, right?)
Sure, it's not a type error for that language.
> Note, this example was in response to David's reply that my definition
> turns every runtime error into a type error. That's not the case, and
> that's all I want to say.
But your definition does do that. Your definition of a type error was
when a program attempts to invoke an operation on values that are not
appropriate for this operation. Clearly, in this example, the program
is invoking an operation (division) on values that are not appropriate
(zero for the second argument). Hence, if your definition really is a
definition, then this must qualify.
> > However, it sounds as
> > if you're claiming that it wouldn't be possible for the type system to
> > do this?
> No. I only need an example where a certain error is not a type error in
> _some_ language. I don't need to make a universal claim here.
Definitions are understood to be statements of the form "if and only
if". They assert that /everything/ that fits the definition is
describable by the word, and /everything/ that doesn't is not
describable by the word. If that's not what you meant, then we are
still in search of a definition.
If you want to make a statement instead of the sort you've implied
above... namely that a type error is *any* error that's raised by a type
system, then that's fine. It certainly brings us closer to static
types. Now, though, the task is to define a type system without making
a circular reference to types. You've already rejected the statement
that all runtime errors are type errors, because you specifically reject
the division by zero case as a type error for most languages. What is
Chris Smith - Lead Software Developer / Technical Trainer
More information about the Python-list