Basic polymorphic typechecking
Science of Computer Programming
Explaining type errors in polymorphic languages
ACM Letters on Programming Languages and Systems (LOPLAS)
Science of Computer Programming
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A Machine-Oriented Logic Based on the Resolution Principle
Journal of the ACM (JACM)
Finding the source of type errors
POPL '86 Proceedings of the 13th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
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
Principal type-schemes for functional programs
POPL '82 Proceedings of the 9th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Typer inference builds a short cut to deforestation
Proceedings of the fourth ACM SIGPLAN international conference on Functional programming
Type-based useless variable elimination
PEPM '00 Proceedings of the 2000 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation
Compositional explanation of types and algorithmic debugging of type errors
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
Type-Based Useless-Variable Elimination
Higher-Order and Symbolic Computation
How to repair type errors automatically
Trends in functional programming
A General Type Inference Framework for Hindley/Milner Style Systems
FLOPS '01 Proceedings of the 5th International Symposium on Functional and Logic Programming
On the Unification of Substitutions in Type Interfaces
IFL '98 Selected Papers from the 10th International Workshop on 10th International Workshop
IJCAR '01 Proceedings of the First International Joint Conference on Automated Reasoning
Scripting the type inference process
ICFP '03 Proceedings of the eighth ACM SIGPLAN international conference on Functional programming
Discriminative sum types locate the source of type errors
ICFP '03 Proceedings of the eighth ACM SIGPLAN international conference on Functional programming
Type error slicing in implicitly typed higher-order languages
Science of Computer Programming - Special issue on 12th European symposium on programming (ESOP 2003)
Information and Computation
Boxy types: inference for higher-rank types and impredicativity
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
Seminal: searching for ML type-error messages
Proceedings of the 2006 workshop on ML
Practical type inference for arbitrary-rank types
Journal of Functional Programming
Searching for type-error messages
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
Efficient type inference using ranked type variables
ML '07 Proceedings of the 2007 workshop on Workshop on ML
Hm(x) type inference is clp(x) solving
Journal of Functional Programming
Extraction in Coq: An Overview
CiE '08 Proceedings of the 4th conference on Computability in Europe: Logic and Theory of Algorithms
Strategies for Solving Constraints in Type and Effect Systems
Electronic Notes in Theoretical Computer Science (ENTCS)
Information and Computation
Heuristics for type error discovery and recovery
IFL'06 Proceedings of the 18th international conference on Implementation and application of functional languages
A rewriting semantics for type inference
ESOP'07 Proceedings of the 16th European conference on Programming
Type error slicing in implicitly typed higher-order languages
ESOP'03 Proceedings of the 12th European conference on Programming
Polymorphic type reconstruction using type equations
IFL'03 Proceedings of the 15th international conference on Implementation of Functional Languages
Improving type error messages for generic Java
Higher-Order and Symbolic Computation
Counter-factual typing for debugging type errors
Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
Toward general diagnosis of static errors
Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
Hi-index | 0.00 |
The Hindley/Milner let-polymorphic type inference system has two different algorithms: one is the de factostandard Algorithm W that is bottom-up (or context-insensitive), and the other is a “folklore” algorithm that is top-down (or context-sensitive). Because the latter algorithm has not been formally presented with its soundness and completeness proofs, and its relation with the W algorithm has not been rigorously investigated, its use in place of (or in combination with) W is not well founded. In this article, we formally define the context-sensitive, top-down type inference algorithm (named “ M”), prove its soundness and completeness, and show a distinguishing property that M always stops earlier than W if the input program is ill typed. Our proofs can be seen as theoretical justifications for various type-checking strategies being used in practice.