File: GADT.hs

package info (click to toggle)
haskell-ghc-exactprint 1.7.1.0-1
  • links: PTS
  • area: main
  • in suites: forky, sid, trixie
  • size: 6,044 kB
  • sloc: haskell: 32,076; makefile: 7
file content (22 lines) | stat: -rw-r--r-- 485 bytes parent folder | download | duplicates (3)
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