kirancodes.me
To Proof Maintenance & Beyond!

Sums of uncertainty: refinements go gradual

Khurram A. Jafery, Jana Dunfield

Abstract

A long-standing shortcoming of statically typed functional languages is that type checking does not rule out pattern-matching failures (run-time match exceptions). Refinement types distinguish different values of datatypes; if a program annotated with refinements passes type checking, pattern-matching failures become impossible. Unfortunately, refinement is a monolithic property of a type, exacerbating the difficulty of adding refinement types to nontrivial programs.

Related papers