:set -XRankNTypes -XConstraintKinds -XTypeApplications import Data.Typeable class Deferrable p where deferEither :: proxy p -> (p => r) -> Either String r
instance (Typeable a, Typeable b) => Deferrable (a ~ b) where deferEither _ _ = undefined
:t deferEither @(_ ~ _)