Reference. Polymorphism with Typed Holes
Cite
Cites 28 works (7 here)
With notes (7)
Total Type Error Localization and Recovery with Holes zhao-2024-total
Gradual Structure Editing with Obligations moon-2023-gradual
Bidirectional Typing dunfield-2021-bidirectional
Graduality and Parametricity: Together Again for the First Time new_jamner_ahmed_2020
Parametric polymorphism and gradual typing have proven to be a difficult combination, with no language yet produced that satisfies the fundamental theorems of each: parametricity and graduality. Notably, Toro, Labrada, and Tanter (POPL 2019) conjecture that for any gradual extension of System F that uses dynamic type generation, graduality and parametricity are “simply incompatible”. However, we argue that it is not graduality and parametricity that are incompatible per se, but instead that combining the syntax of System F with dynamic type generation as in previous work necessitates type-directed computation, which we show has been a common source of graduality and parametricity violations in previous work.
We then show that by modifying the syntax of universal and existential types to make the type name generation explicit, we remove the need for type-directed computation, and get a language that satisfies both graduality and parametricity theorems. The language has a simple runtime semantics, which can be explained by translation to a statically typed language where the dynamic type is interpreted as a dynamically extensible sum type. Far from being in conflict, we show that the parametricity theorem follows as a direct corollary of a relational interpretation of the graduality property.
Live functional programming with typed holes omar-2019-live
Hazelnut: a bidirectionally typed structure editor calculus omar-2017-hazelnut
Complete and easy bidirectional typechecking for higher-rank polymorphism dunfield-2013-complete
External (21)
- Gradual System F (2022)
- Consistent Subtyping for All (2019)
- Theorems for free for free: parametricity, with and without types (2017)
- On polymorphic gradual typing (2017)
- Practical Foundations for Programming Languages (2016)
- Jupyter Notebooks – a publishing format for reproducible computational workflows (2016)
- Refined Criteria for Gradual Typing (2015)
- Monotonic references for efficient gradual typing (2015)
- Understanding TypeScript (2014)
- A perspective on the evolution of live programming (2013)
- From bytecode to JavaScript: the Js_of_ocaml compiler (2013)
- Blame for all (2011)
- Debugging: a review of the literature from an educational perspective (2008)
- Erasure and Polymorphism in Pure Type Systems (2008)
- Contextual modal type theory (2008)
- Spreadsheet functional programming (2007)
- Gradual typing for functional languages (2006)
- A simple proof technique for certain parametricity results (1999)
- Towards a theory of type structure (1974)
- Interprétation fonctionnelle et élimination des coupures de l'arithmétique d'ordre supérieur (PhD thesis) (1972)
- A formulation of the simple theory of types (1940)