priorityCon :: c -> [(TypeRank, [(Weight, DataPat c tc tv)])]
  -> (TypeRank, [(Weight, DataPat c tc tv)])
priorityCon c cargs =
  (maximum (fst <$> cargs), combine (DPCon c) <$> sequence (snd <$> cargs))
priorityCon :: c -> [(TypeRank, [(Weight, DataPat c tc tv)])]
  -> (TypeRank, [(Weight, DataPat c tc tv)])
priorityCon c cargs =
  (maximum (fst <$> cargs), combine (DPCon c) <$> sequence (snd <$> cargs))
priorityCon c cargs =
  (maximum (fst <$> cargs), combine (DPCon c) <$> sequence (snd <$> cargs))