Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: Notesfiles $Revision: 1.6.2.16 $; site ada-uts.UUCP Path: utzoo!watmath!clyde!burl!ulysses!allegra!mit-eddie!genrad!panda!talcott!harvard!bbnccv!ada-uts!richw From: richw@ada-uts.UUCP Newsgroups: net.lang Subject: Type-System Questions Message-ID: <15100005@ada-uts.UUCP> Date: Thu, 24-Oct-85 10:58:00 EDT Article-I.D.: ada-uts.15100005 Posted: Thu Oct 24 10:58:00 1985 Date-Received: Sat, 26-Oct-85 19:17:05 EDT Lines: 27 Nf-ID: #N:ada-uts:15100005:000:1203 Nf-From: ada-uts!richw Oct 24 10:58:00 1985 Does anyone know of any languages that either: 1) Attempts to do compile-time type-checking via "type inference"? That is, by analyzing the data flow of a program, the compiler tells you when it's sure that a type mismatch occurs -- this allows the programmer to not explicitly declare types. Yes, I know that this can lead to situations where a variable may refer to objects of several types, and is thus not perfect. I'm still curious to know if systems exist which try this. or... 2) Includes BOTH compile-time types and run-time, "manifest" types? By compile-time type, I mean that the type of an object is only known by the compiler during compilation -- at run-time, there are no flags (or the like) attached to data marking its type. Manifest types refer to objects which do have such flags indicating type. As an example, Lisp objects will have bits associated with them indicating whether they're atoms, lists, etc. Since I believe both type-systems have advantages, I'm curious to see if any languages have tried getting the benefits of both. No preference for posting responses vs. personal E-mail. Thanks "in advance", --- Rich Wagner