Abstract
In the context of gradual typing, type soundness guarantees the safety of typed code. When untyped code fails to respect types, a runtime check finds the discrepancy. As for untyped code, type soundness makes no promises; it does not protect untyped code from mistakes in type specifications and unwarranted blame. To address the asymmetry, this paper adapts complete monitoring from the contract world to gradual typing. Complete monitoring strengthens plain soundness into a guarantee that catches problems with faulty type specifications. Furthermore, a semantics that satisfies complete monitoring can easily pinpoint the conflict between a type specification and a value. For gradual typing systems that fail complete monitoring, the technical framework provides a source-of-truth to assess the quality of blame.
Original language | English (US) |
---|---|
Article number | A122 |
Journal | Proceedings of the ACM on Programming Languages |
Volume | 3 |
Issue number | OOPSLA |
DOIs | |
State | Published - Oct 2019 |
Keywords
- Blame completeness
- Blame soundness
- Complete monitoring
ASJC Scopus subject areas
- Software
- Safety, Risk, Reliability and Quality