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