{-# LANGUAGE FlexibleContexts, ConstraintKinds, TypeOperators, TypeFamilies, RankNTypes #-} module TySynConstraints where import GHC.Exts import Definitions type CT1 a = Eq [a] {-* FlexibleContexts, FlexibleContexts, ConstraintKinds *-} type CT2 a = (Eq [a]) {-* FlexibleContexts, FlexibleContexts, ConstraintKinds *-} type CT3 a = (Eq a, Ord [a]) {-* FlexibleContexts, FlexibleContexts, ConstraintKinds *-} type CT4 a = (Eq a, Ord [a]) {-* FlexibleContexts, FlexibleContexts, ConstraintKinds *-} type CT5 a = a :?: T a {-* FlexibleContexts, FlexibleContexts, ConstraintKinds, TypeOperators *-} type CT6 a = (a :!: a) (T a) {-* FlexibleContexts, FlexibleContexts, ConstraintKinds, TypeOperators *-} type CT7 a = Eq [a] => a {-* FlexibleContexts, FlexibleContexts *-} type CT8 a = (Ctxt a, Ord a) {-* FlexibleContexts, FlexibleContexts, ConstraintKinds *-} type CTTF1 a b = [a] ~ b {-* TypeFamilies + GADTs, TypeFamilies + GADTs, ConstraintKinds *-} type CTTF2 a = (TF [a], TF (T a), TF a ~ Eq [a]) {-* TypeFamilies + GADTs, TypeFamilies + GADTs, ConstraintKinds *-} type CTTyVarHeads (f :: * -> Constraint) a = f a {-* KindSignatures, KindSignatures, KindSignatures, ConstraintKinds *-}