Type inference of singular matches on GADTs