Unification: a multidisciplinary survey
ACM Computing Surveys (CSUR)
An algorithm for optimal lambda calculus reduction
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Term graph rewriting: theory and practice
Term graph rewriting: theory and practice
Science of Computer Programming
Compositional explanation of types and algorithmic debugging of type errors
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
A maximum-flow approach to anomaly isolation in unification-based incremental type inference
POPL '86 Proceedings of the 13th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
The Haskell: The Craft of Functional Programming
The Haskell: The Craft of Functional Programming
Programming with visual expressions
VL '95 Proceedings of the 11th International IEEE Symposium on Visual Languages
Unification source-tracking with application to diagnosis of type inference
Unification source-tracking with application to diagnosis of type inference
The call-by-need lambda calculus
Journal of Functional Programming
ESOP'03 Proceedings of the 12th European conference on Programming
Hi-index | 0.00 |
We describe a type-inference algorithm that is based on labeling nodes with type information in a graph that represents type constraints. This algorithm produces the same results as the famous algorithm of Milner, but is much simpler to use, which is of importance especially for teaching type systems and type inference. The proposed algorithm employs a more concise notation and yields inferences that are shorter than applications of the traditional algorithm. Simplifications result, in particular, from three facts: (1) We do not have to maintain an explicit type environment throughout the algorithm because the type environment is represented implicitly through node labels. (2) The use of unification is simplified through label propagation along graph edges. (3) The typing decisions in our algorithm are dependency-driven (and not syntax-directed), which reduces notational overhead and bookkeeping.