1{-# LANGUAGE KindSignatures #-} 2{-# LANGUAGE DataKinds #-} 3{-# LANGUAGE PolyKinds #-} 4 5class C1 (a :: Bool) where 6 c :: proxy a -> Int 7 8class C2 (a :: [*]) 9 10data Baz = Baz 11 12data Foo = Foo 13 14class C3 (a :: [(Baz, Foo)]) 15 16class C4 (a :: (*)) 17 18class C5 (a :: App foo baz) 19 20class C6 (a :: (parens)) 21 22data X (a :: [*]) 23x1 = undefined :: X '[Int] 24x2 = undefined :: X '[Int, Double] 25 26data Y (a :: (*, Bool)) 27y1 = undefined :: Y '(Double, True) 28y2 = undefined :: Y '(Double, 'False) 29z1 = undefined :: X [a -> b, X '[]] 30z2 = undefined :: Y (a -> b, True) 31