1{-# Language DatatypeContexts #-} 2{-# Language ExistentialQuantification #-} 3{-# LAnguage GADTs #-} 4{-# LAnguage KindSignatures #-} 5 6data Foo = A 7 | B 8 | C 9 10-- | data_or_newtype capi_ctype tycl_hdr constrs deriving 11data {-# Ctype "Foo" "bar" #-} F1 = F1 12data {-# Ctype "baz" #-} Eq a => F2 a = F2 a 13 14data (Eq a,Ord a) => F3 a = F3 Int a 15 16data F4 a = forall x y. (Eq x,Eq y) => F4 a x y 17 | forall x y. (Eq x,Eq y) => F4b a x y 18 19 20data G1 a :: * where 21 G1A, G1B :: Int -> G1 a 22 G1C :: Double -> G1 a 23 24data G2 a :: * where 25 G2A :: { g2a :: a, g2b :: Int } -> G2 a 26 G2C :: Double -> G2 a 27 28 29 30data (Eq a,Ord a) => G3 a = G3 31 { g3A :: Int 32 , g3B :: Bool 33 , g3a :: a 34 } deriving (Eq,Ord) 35