A class for types that compose similar to wildcards.
All instances must satisfy the following:
matchdefines a partial order;
topis the top element of this order and
intersectis a meet.
- Meets are exact: if
match x yand
match x z, then
match x (fromJust (intersect y z)), if such a meet exists.
Minimal complete definition: top and intersect.