{-# LANGUAGE GADTs      #-}
{-# LANGUAGE LambdaCase #-}

data GADT a where
  B1 :: GADT Bool
  B2 :: GADT Bool
  Int :: GADT Int
  Var :: GADT a


hasHomo :: GADT Bool -> GADT a
hasHomo g = _

cantHomo :: GADT a -> GADT Int
cantHomo g = _

hasHomoLam :: GADT Bool -> GADT a
hasHomoLam = _

cantHomoLam :: GADT a -> GADT Int
cantHomoLam = _