summaryrefslogtreecommitdiff
path: root/tests/examples/ghc86/GADT.hs
blob: 521f8034fe8d84d0c11d0a51cb6e7bb1e0c4608b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{-# LANGUAGE RankNTypes #-}

data Empty
data NonEmpty

data SafeList x y where
     Nil :: SafeList x Empty
     Cons:: Eq x => x -> SafeList x y  -> SafeList x NonEmpty
     One :: Eq x => x -> SafeList x Empty -> SafeList x NonEmpty

safeHead :: SafeList x NonEmpty -> x
safeHead (Cons x _) = x

foo = Cons 3 (Cons 6 (Cons 9 Nil))


data Dict x where
        DictN :: Num x => x -> Dict x
        DictE :: Eq x =>  x -> Dict x

data Exist where
        Exist :: forall a. a -> Exist