{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE GADTs #-} module T3950 where -- Id :: (* -> * -> *) -> * -> * -> * data Id p x y = Id (p x y) -- Sealed :: (* -> *) -> * data Sealed p where Sealed :: p x -> Sealed p -- w :: (* -> * -> *) -> * -- Id p :: * -> * -> * rp :: Bool -> Maybe (w (Id p)) rp _ = Just rp' where rp' :: Sealed (Id p x) rp' = undefined