Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!sun-barr!olivea!genie!udel!haven.umd.edu!socrates.umd.edu!socrates!rockwell From: rockwell@socrates.umd.edu (Raul Rockwell) Newsgroups: comp.lang.misc Subject: Re: A Hard Problem for Static Type Systems Message-ID: Date: 26 Apr 91 00:36:38 GMT References: <2392@optima.cs.arizona.edu> <3156@opal.cs.tu-berlin.de> Sender: rockwell@socrates.umd.edu (Raul Rockwell) Organization: Traveller Lines: 23 Wolfgang Grieskamp writes: > C++ is "strongly typed" with dynamic binding (according to > "virtuals"), since the error "message not understood" is not part of > the languages operational semantics. If C++ is strongly typed because of the lack of this error, then so is machine language. I'm not sure I see the point of calling this property "strongly typed". My own definition of "strongly typed" was that the language will not return a result for applying a function to values which are outside its domain. Note that except for trivial cases you most definitely can get "domain errors" (or "message not understood") at runtime. Now, I understand that classic works have claimed that a type error is a value which puts the program in an infinite loop. However, I would say that a language where this happens is weakly typed. In fact, I think that from this point of view, a "strongly typed" language is one which only allows finite looping constructs, and which guarantees a well-behaved "run-time error" whenever a partial function is applied incorrectly (or maybe we should call this "absolutely typed"?). Raul Rockwell