:set -XKindSignatures -XRank2Types -XConstraintKinds -XAllowAmbiguousTypes -XInstanceSigs import Data.Kind class Defer (p :: Constraint) where defer :: (p => r) -> r instance Defer () where defer :: r -> r; defer = id :i Defer