Dependently-typed programming languages provide a powerful tool for establishing code correctness. However, it can be hard for newcomers to learn how to employ the advanced type system of such languages effectively. For simply-typed languages, several techniques have been devised to generate helpful error messages and suggestions for the programmer. We adapt these techniques to dependently-typed languages, to facilitate their more widespread adoption. In particular, we modify a higher-order unification algorithm that is used to resolve and type-check implicit arguments. We augment this algorithm with replay graphs, allowing for a global heuristic analysis of a unification problem-set, error-tolerant typing, which allows type-checking to continue after errors are found, and counter-factual unification, which makes error messages less affected by the order in which types are checked. A formalization of our algorithm is presented with an outline of its correctness. We implement replay graphs, and compare the generated error messages to those from existing languages, highlighting the improvements we achieved.
Contents
- Topical Issue on Type Error Diagnosis and Closely Related Fields
-
January 24, 2019
-
February 14, 2019
-
March 26, 2019
- Topical Issue on Intelligent Methods for Textual Information Retrieval
-
Open AccessHypergraph-of-entityJune 6, 2019
-
Open AccessUnsupervised and weakly supervised approaches for answer selection tasks with scarce annotationsJuly 30, 2019
-
August 12, 2019
-
October 11, 2019
- Research Articles
-
April 15, 2019
-
April 20, 2019
-
June 25, 2019
-
Open AccessAn image processing pipeline to segment iris for unconstrained cow identification systemAugust 3, 2019
-
August 12, 2019
-
September 26, 2019
-
October 11, 2019
-
October 11, 2019
-
October 11, 2019
-
October 16, 2019
-
November 8, 2019