blob: 3d60ff7b51735aa7f99747227beb03b4d10410cc (
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
{-# LANGUAGE StandaloneKindSignatures #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE ImpredicativeTypes #-}
unit p where
module M where
import Data.Kind
type C :: Type -> Constraint
class C a where
type family F a :: Type
unit q where
dependency p
signature H where
data T1
data T2
data T3
module N where
import M ( C(F) )
import H ( T1, T2, T3 )
instance C T1 where
type F T1 = T2
instance C T2 where
type F T2 = T3
instance C T3 where
type F T3 = T1
unit r where
dependency p
module H where
import Data.Kind
type S1 :: Type -> Type
data S1 a = MkS1
type S2 :: Type
data S2 = MkS2
type G :: Type -> Constraint
class G a where {}
type T1 = S1 (forall (a :: Type). a -> a)
type T2 = S1 (G S2 => S2)
type Y = forall a. a -> a
type Z = Y
type T3 = S1 Y
unit s where
dependency p
dependency r
dependency q[H=r:H]
|