summaryrefslogtreecommitdiff
path: root/testsuite/tests/typecheck/should_compile/tc244.hs
blob: 196f6e0990785065822f33ef8cd6eb2d53754c05 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
{-# LANGUAGE TypeFamilies, GADTs #-}

-- Tests record update in the presence of
-- existentials, GADTs, type families

module Rec where

----------------- Existential
data S a where
   S1 :: { fs1 :: a, fs2 :: b } -> S a
   S2 :: { fs1 :: a } -> S a

updS s x = s { fs1=x }

{-
------------------ GADT
data T a b where
   T1 :: { ft1 :: a, ft2 :: c, ft3 :: d } -> T a Int
   T2 :: { ft1 :: a, ft3 :: c } -> T a Int
   T3 :: T Int b

f :: T a1 b -> a2 -> T a2 b
f x v = x { ft1 = v }

------------------ Type family
data family R a
data instance R (a,b) where
   R1 :: { fr1 :: a, fr2 :: b, fr3 :: c } -> R (a,b)
   R2 :: { fr1 :: a, fr3 :: c } -> R (a,b)

updR r x = r { fr1=x }
-}