Line No. | Rev | Author | Line |
---|---|---|---|
1 | 1 | paulosilva | |
2 | {-# OPTIONS_GHC -Wall #-} | ||
3 | |||
4 | |||
5 | |||
6 | |||
7 | Module : Language.R.Syntax | ||
8 | Description : | ||
9 | Copyright : (c) Paulo Silva | ||
10 | License : LGPL | ||
11 | |||
12 | |||
13 | Stability : experimental | ||
14 | Portability : portable | ||
15 | |||
16 | |||
17 | -} | ||
18 | |||
19 | |||
20 | |||
21 | |||
22 | R(..), | ||
23 | RType | ||
24 | ) where | ||
25 | |||
26 | |||
27 | import Data.Map(Map) | ||
28 | import Data.Set(Set) | ||
29 | import Language.Type.Syntax | ||
30 | |||
31 | |||
32 | |||
33 | |||
34 | BOT :: R (b :<->: a) | ||
35 | TOP :: R (b :<->: a) | ||
36 | NEG :: R (b :<->: a) -> R (b :<->: a) | ||
37 | MEET :: R (b :<->: a) -> R (b :<->: a) -> R (b :<->: a) | ||
38 | JOIN :: R (b :<->: a) -> R (b :<->: a) -> R (b :<->: a) | ||
39 | ID :: R (a :<->: a) | ||
40 | CONV :: R (b :<->: a) -> R (a :<->: b) | ||
41 | COMP :: Type b -> R (c :<->: b) -> R (b :<->: a) -> R (c :<->: a) | ||
42 | SPLIT :: R (b :<->: a) -> R (c :<->: a) -> R ((b,c) :<->: a) | ||
43 | |||
44 | |||
45 | FUN :: R (b :<-: a) -> R (b :<->: a) | ||
46 | |||
47 | |||
48 | RIGHTSEC :: Type c -> R (a :<-: (b,c)) -> R c -> R (a :<-: b) | ||
49 | |||
50 | |||
51 | DEF :: Name -> Type a -> R a | ||
52 | Var :: Name -> R a | ||
53 | |||
54 | |||
55 | EITHER :: R (b :<->: a) -> R (d :<->: c) -> R (Either b d :<->: Either a c) | ||
56 | MAYBE :: R (b :<->: a) -> R (Maybe b :<->: Maybe a) | ||
57 | LIST :: R (b :<->: a) -> R ([b] :<->: [a]) | ||
58 | SET :: R (b :<->: a) -> R (Set b :<->: Set a) | ||
59 | MAP :: R (b :<->: a) -> R (Map k b :<->: Map k a) | ||
60 | |||
61 | |||
62 | 5 | paulosilva | |
63 | |||
64 | 1 | paulosilva | FComp :: Type b -> R (c :<-: b) -> R (b :<-: a) -> R (c :<-: a) |
65 | |||
66 | |||
67 | OComp :: R (PO a) -> R (PO a) -> R (PO a) | ||
68 | OConv :: R (PO a) -> R (PO a) | ||
69 | OProd :: R (PO a) -> R (PO (a,a)) | ||
70 | |||
71 | |||
72 | OMeet :: R (PO a) -> R (a :<-: (a,a)) | ||
73 | OMax :: R (PO a) -> R a | ||
74 | OMin :: R (PO a) -> R a | ||
75 | |||
76 | |||
77 | -> R (b :<-: a) -> R (a :<-: b) | ||
78 | -> R (PO b) -> R (PO a) | ||
79 | -> R (GC b a) | ||
80 | |||
81 | |||
82 | GComp :: Type b -> R (GC c b) -> R (GC b a) -> R (GC c a) | ||
83 | GConv :: R (GC b a) -> R (GC a b) | ||
84 | |||
85 | |||
86 | GUAdj :: R (GC b a) -> R (a :<-: b) | ||
87 | GLOrd :: Type a -> R (GC b a) -> R (PO b) | ||
88 | GUOrd :: Type b -> R (GC b a) -> R (PO a) | ||
89 | |||
90 | |||
91 | |||
92 | |||
93 | |||
94 | |||
95 |