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