Type Inference Problems: A Survey

It is well recognized that types play an important role in programming. In strongly typed programming languages types serve as a device that helps to prevent the kind of errors as an application of an operator to an incompatible operand, such as indexing on a non-array variable. Hence, types in programming can be viewed as a safety mechanism. This is what types are good for. However, the price for working in a strongly typed environment is that the types can get very large. Hence, if types are to be explicit in every programming construct, then this may seriously affect readibility of a program, as well as it may cause severe difficulties when debugging the program. A possible solution to the above problem is to work in a system where types can be omitted from programs and retrieved from the program structure when needed.

[1]  Didier Rémy,et al.  Type checking records and variants in a natural extension of ML , 1989, POPL '89.

[2]  John C. Mitchell,et al.  Polymorphic unification and ML typing , 1989, POPL '89.

[3]  Alan Mycroft,et al.  Polymorphic Type Schemes and Recursive Definitions , 1984, Symposium on Programming.

[4]  Jerzy Tiuryn,et al.  A proper extension of ML with an effective type-assignment , 1988, POPL '88.

[5]  John C. Mitchell,et al.  The essence of ML , 1988, POPL '88.

[6]  Pavel Pudlák,et al.  On a unification problem related to Kreisel's conjecture , 1988 .

[7]  Luca Cardelli,et al.  A Semantics of Multiple Inheritance , 1984, Inf. Comput..

[8]  John C. Reynolds,et al.  Towards a theory of type structure , 1974, Symposium on Programming.

[9]  Philip K. Hooper The undecidability of the Turing machine immortality problem , 1966, Journal of Symbolic Logic.

[10]  Nancy McCracken,et al.  The Typechecking of Programs with Implicit Type Structure , 1984, Semantics of Data Types.

[11]  Luca Cardelli,et al.  A Semantics of Multiple Inheritance , 1984, Information and Computation.

[12]  John C. Mitchell,et al.  Coercion and type inference , 1984, POPL.

[13]  Fritz Henglein,et al.  Type inference and semi-unification , 1988, LISP and Functional Programming.

[14]  Jerzy Tiuryn,et al.  Computational consequences and partial solutions of a generalized unification problem , 1989, [1989] Proceedings. Fourth Annual Symposium on Logic in Computer Science.

[15]  Harry G. Mairson Deciding ML typability is complete for deterministic exponential time , 1989, POPL '90.

[16]  Alonzo Church,et al.  A formulation of the simple theory of types , 1940, Journal of Symbolic Logic.

[17]  R. Hindley The Principal Type-Scheme of an Object in Combinatory Logic , 1969 .

[18]  Frank Pfenning,et al.  Partial polymorphic type inference and higher-order unification , 1988, LISP and Functional Programming.

[19]  Paliath Narendran,et al.  Semi-Unification , 1991, Theor. Comput. Sci..

[20]  Brad J. Cox,et al.  Object-oriented programming ; an evolutionary approach , 1986 .

[21]  Mitchell Wand,et al.  Complete Type Inference for Simple Objects , 1987, LICS.

[22]  Mitchell Wand,et al.  On the complexity of type inference with coercion , 1989, FPCA.

[23]  Hans-Juergen Boehm Partial Polymorphic Type Inference Is Undecidable , 1985, FOCS.

[24]  Mike Paterson,et al.  Linear unification , 1976, STOC '76.

[25]  Robin Milner,et al.  A Theory of Type Polymorphism in Programming , 1978, J. Comput. Syst. Sci..

[26]  Jerzy Tiuryn,et al.  The undecidability of the semi-unification problem , 1990, STOC '90.

[27]  Paola Giannini,et al.  Characterization of typings in polymorphic type discipline , 1988, [1988] Proceedings. Third Annual Information Symposium on Logic in Computer Science.

[28]  J. Girard Une Extension De ĽInterpretation De Gödel a ĽAnalyse, Et Son Application a ĽElimination Des Coupures Dans ĽAnalyse Et La Theorie Des Types , 1971 .

[29]  Prateek Mishra,et al.  Type Inference with Subtypes , 1990, Theor. Comput. Sci..

[30]  Jerzy Tiuryn,et al.  Type reconstruction in finite-rank fragments of the polymorphic lambda -calculus , 1990, [1990] Proceedings. Fifth Annual IEEE Symposium on Logic in Computer Science.

[31]  Daniel Leivant,et al.  Polymorphic type inference , 1983, POPL '83.

[32]  Robin Milner,et al.  Principal type-schemes for functional programs , 1982, POPL '82.

[33]  John C. Mitchell,et al.  ML with extended pattern matching and subtypes , 1988, LISP and Functional Programming.

[34]  Daniel Leivant,et al.  The Expressiveness of Simple and Second-Order Type Structures , 1983, JACM.

[35]  Peter Buneman,et al.  Type inference in a database programming language , 1988, LISP and Functional Programming.

[36]  John C. Mitchell,et al.  On the Sequential Nature of Unification , 1984, J. Log. Program..

[37]  Hans Leiß,et al.  On Type Inference for Object-Oriented Programming Languages , 1987, CSL.

[38]  Mitchell Wand,et al.  Type inference for record concatenation and multiple inheritance , 1989, [1989] Proceedings. Fourth Annual Symposium on Logic in Computer Science.

[39]  Daniel Leivant Stratified Polymorphism (Extended Summary) , 1989, LICS 1989.