{-# Language DatatypeContexts #-} {-# Language ExistentialQuantification #-} {-# LAnguage GADTs #-} {-# LAnguage KindSignatures #-} data Foo = A | B | C -- | data_or_newtype capi_ctype tycl_hdr constrs deriving data {-# Ctype "Foo" "bar" #-} F1 = F1 data {-# Ctype "baz" #-} Eq a => F2 a = F2 a data (Eq a,Ord a) => F3 a = F3 Int a data F4 a = forall x y. (Eq x,Eq y) => F4 a x y | forall x y. (Eq x,Eq y) => F4b a x y data G1 a :: * where G1A, G1B :: Int -> G1 a G1C :: Double -> G1 a data G2 a :: * where G2A { g2a :: a, g2b :: Int } :: G2 a G2C :: Double -> G2 a data (Eq a,Ord a) => G3 a = G3 { g3A :: Int , g3B :: Bool , g3a :: a } deriving (Eq,Ord)