The undecidability of the semi-unification problem
STOC '90 Proceedings of the twenty-second annual ACM symposium on Theory of computing
PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
Deriving descriptions of possible values of program variables by means of abstract interpretation
Journal of Logic Programming
Type reconstruction in the presence of polymorphic recursion
ACM Transactions on Programming Languages and Systems (TOPLAS)
Type inference with polymorphic recursion
ACM Transactions on Programming Languages and Systems (TOPLAS)
Fast and precise regular approximations of logic programs
Proceedings of the eleventh international conference on Logic programming
A type-based compiler for standard ML
PLDI '95 Proceedings of the ACM SIGPLAN 1995 conference on Programming language design and implementation
TIL: a type-directed optimizing compiler for ML
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
A practical subtyping system for Erlang
ICFP '97 Proceedings of the second ACM SIGPLAN international conference on Functional programming
A unified computation model for functional and logic programming
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Purely functional data structures
Purely functional data structures
Functional Programming and Parallel Graph Rewriting
Functional Programming and Parallel Graph Rewriting
Polymorphic Type Schemes and Recursive Definitions
Proceedings of the 6th Colloquium on International Symposium on Programming
A soft-typing system for Erlang
Proceedings of the 2003 ACM SIGPLAN workshop on Erlang
TypEr: a type annotator of Erlang code
Proceedings of the 2005 ACM SIGPLAN workshop on Erlang
ACM Transactions on Programming Languages and Systems (TOPLAS)
Inference of well-typings for logic programs with application to termination analysis
SAS'05 Proceedings of the 12th international conference on Static Analysis
From Monomorphic to Polymorphic Well-Typings and Beyond
Logic-Based Program Synthesis and Transformation
Typing as functional-logic evaluation
PEPM '13 Proceedings of the ACM SIGPLAN 2013 workshop on Partial evaluation and program manipulation
Hi-index | 0.00 |
One of the disadvantages of statically typed languages is the programming overhead caused by writing all the necessary type information: Both type declarations and type definitions are typically required. Traditional type inference aims at relieving the programmer from the former.We present a rule-based constraint rewriting algorithm that reconstructs both type declarations and type definitions, allowing the programmer to effectively program type-less in a strictly typed language. This effectively combines strong points of dynamically typed languages (rapid prototyping) and statically typed ones (documentation, optimized compilation). Moreover it allows to quickly port code from a statically untyped to a statically typed setting.Our constraint-based algorithm reconstructs uniform polymorphic definitions of algebraic data types and simultaneously infers the types of all expressions and functions (supporting polymorphic recursion) in the program. The declarative nature of the algorithm allows us to easily show that it has a number of highly desirable properties such as soundness, completeness and various optimality properties. Moreover, we show how to easily extend and adapt it to suit a number of different language constructs and type system features