I think the only covering patterns are
- variable (e.g.
a)
- record (e.g.
{foo: foo})
The primitives (Int, Float, Char, and String) cannot have covering patterns; nor can ADTs with multiple constructors (including Lists). I could add pattern support for ADTs with only a single constructor, but this feels like it would be an incoherent addition; reconsider later.