patUnusedVarCount :: Pat e -> DeBruijnIndex
patUnusedVarCount p =
  case p of
    PVar{} -> 0
    PUnused{} -> 1
    PCtor _ l -> sumBy patUnusedVarCount l
    PUnit     -> 0
    PPair x y -> patUnusedVarCount x + patUnusedVarCount y
    PRecord m -> sumBy patUnusedVarCount m
patUnusedVarCount :: Pat e -> DeBruijnIndex
patUnusedVarCount p =
  case p of
    PVar{} -> 0
    PUnused{} -> 1
    PCtor _ l -> sumBy patUnusedVarCount l
    PUnit     -> 0
    PPair x y -> patUnusedVarCount x + patUnusedVarCount y
    PRecord m -> sumBy patUnusedVarCount m
patUnusedVarCount p =
  case p of
    PVar{} -> 0
    PUnused{} -> 1
    PCtor _ l -> sumBy patUnusedVarCount l
    PUnit     -> 0
    PPair x y -> patUnusedVarCount x + patUnusedVarCount y
    PRecord m -> sumBy patUnusedVarCount m