The art of computer programming, volume 1 (3rd ed.): fundamental algorithms
The art of computer programming, volume 1 (3rd ed.): fundamental algorithms
A Machine-Oriented Logic Based on the Resolution Principle
Journal of the ACM (JACM)
An Efficient Unification Algorithm
ACM Transactions on Programming Languages and Systems (TOPLAS)
Incremental Context-Dependent Analysis for Language-Based Editors
ACM Transactions on Programming Languages and Systems (TOPLAS)
Incremental polymorphic type checking in B
POPL '83 Proceedings of the 10th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
An ideal model for recursive polymorphic types
POPL '84 Proceedings of the 11th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
The PSG - Programming System Generator
SLIPE '85 Proceedings of the ACM SIGPLAN 85 symposium on Language issues in programming environments
SIGPLAN '79 Proceedings of the 1979 SIGPLAN symposium on Compiler construction
The Poe language-based editor project
SDE 1 Proceedings of the first ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
Type inference with polymorphic recursion
ACM Transactions on Programming Languages and Systems (TOPLAS)
Explaining type errors in polymorphic languages
ACM Letters on Programming Languages and Systems (LOPLAS)
Proofs about a folklore let-polymorphic type inference algorithm
ACM Transactions on Programming Languages and Systems (TOPLAS)
A slicing-based approach for locating type errors
ACM Transactions on Software Engineering and Methodology (TOSEM)
Compositional explanation of types and algorithmic debugging of type errors
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
From symptom to cause: localizing errors in counterexample traces
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
On the Unification of Substitutions in Type Interfaces
IFL '98 Selected Papers from the 10th International Workshop on 10th International Workshop
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
A visualisation of polymorphic type checking
Journal of Functional Programming
Information and Computation
Seminal: searching for ML type-error messages
Proceedings of the 2006 workshop on ML
Jifclipse: development tools for security-typed languages
Proceedings of the 2007 workshop on Programming languages and analysis for security
A type system equivalent to a model checker
ACM Transactions on Programming Languages and Systems (TOPLAS)
Corrective hints for type incorrect generic Java programs
Proceedings of the 2010 ACM SIGPLAN workshop on Partial evaluation and program manipulation
Information and Computation
Journal of Visual Languages and Computing
Heuristics for type error discovery and recovery
IFL'06 Proceedings of the 18th international conference on Implementation and application of functional languages
Type error slicing in implicitly typed higher-order languages
ESOP'03 Proceedings of the 12th European conference on Programming
A type system equivalent to a model checker
ESOP'05 Proceedings of the 14th European conference on Programming Languages and Systems
Polymorphic type reconstruction using type equations
IFL'03 Proceedings of the 15th international conference on Implementation of Functional Languages
PADL'05 Proceedings of the 7th international conference on Practical Aspects of Declarative Languages
Improving type error messages for generic Java
Higher-Order and Symbolic Computation
Security type error diagnosis for higher-order, polymorphic languages
PEPM '13 Proceedings of the ACM SIGPLAN 2013 workshop on Partial evaluation and program manipulation
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 |
A crucial aspect of a program intended for general use is its behavior in the presence of erroneous inputs. For instance, much attention has been devoted to the problems of error detection, reporting, and correction in compilers1,2. As programming languages and systems based in one way or another on unification3 become more common, it becomes increasingly important to develop a theory of error detection and correction for unification-based systems. We report here on a language-based editor for a variant of ML4 that uses a novel approach to the isolation of likely causes of user errors. As the user edits and manipulates his or her program, unification is incrementally applied to determine its type correctness. If a type inconsistency arises, a maximum flow technique is applied to the set of type equations to determine the most likely source of error. In this way a determination can be made as to the relative strengths with which the set of type equations asserts multiple contradictory hypotheses. In a language such as ML, the type of an object is inferred from patterns of usage. Often it is the case that most uses of a given object are mutually consistent, whereas one or a very small number of uses conflict with the general usage pattern. In MOE (ML-Oriented Editor), if it is possible to discern that such a situation has arisen, likely errors are highlighted at high intensity and all other program components that contributed to the inferred type of the object are highlighted at a lower intensity. In providing error information to the user, two principles are observed:(1) Error indications should be complete but parsimonious; the user should see highlighted on the screen everything that contributed directly to an error, but nothing. more,(2) The user's attention should be drawn to what appear to be the anomalies that are responsible for errors.Language-based editors permit a new level of quality in the process of helping users when inputs are, for one reason or another, invalid. Unification-based type inference in language-based editors appears to have been first considered by Meertens 5. Snelting and Bahlke have more recently also explored this approach.