comparison src/elab.sml @ 623:588b9d16b00a

Start of kind polymorphism, up to the point where demo/hello elaborates with updated Basis/Top
author Adam Chlipala <adamc@hcoop.net>
date Sun, 22 Feb 2009 16:10:25 -0500
parents 8998114760c1
children 12b73f3c108e
comparison
equal deleted inserted replaced
622:d64533157f40 623:588b9d16b00a
38 | KTuple of kind list 38 | KTuple of kind list
39 39
40 | KError 40 | KError
41 | KUnif of ErrorMsg.span * string * kind option ref 41 | KUnif of ErrorMsg.span * string * kind option ref
42 42
43 | KRel of int
44 | KFun of string * kind
45
43 withtype kind = kind' located 46 withtype kind = kind' located
44 47
45 datatype explicitness = 48 datatype explicitness =
46 Explicit 49 Explicit
47 | Implicit 50 | Implicit
59 | CNamed of int 62 | CNamed of int
60 | CModProj of int * string list * string 63 | CModProj of int * string list * string
61 | CApp of con * con 64 | CApp of con * con
62 | CAbs of string * kind * con 65 | CAbs of string * kind * con
63 | CDisjoint of auto_instantiate * con * con * con 66 | CDisjoint of auto_instantiate * con * con * con
67
68 | CKAbs of string * con
69 | CKApp of con * kind
70 | TKFun of string * con
64 71
65 | CName of string 72 | CName of string
66 73
67 | CRecord of kind * (con * con) list 74 | CRecord of kind * (con * con) list
68 | CConcat of con * con 75 | CConcat of con * con
104 | EApp of exp * exp 111 | EApp of exp * exp
105 | EAbs of string * con * con * exp 112 | EAbs of string * con * con * exp
106 | ECApp of exp * con 113 | ECApp of exp * con
107 | ECAbs of explicitness * string * kind * exp 114 | ECAbs of explicitness * string * kind * exp
108 115
116 | EKAbs of string * exp
117 | EKApp of exp * kind
118
109 | ERecord of (con * exp * con) list 119 | ERecord of (con * exp * con) list
110 | EField of exp * con * { field : con, rest : con } 120 | EField of exp * con * { field : con, rest : con }
111 | EConcat of exp * con * exp * con 121 | EConcat of exp * con * exp * con
112 | ECut of exp * con * { field : con, rest : con } 122 | ECut of exp * con * { field : con, rest : con }
113 | ECutMulti of exp * con * { rest : con } 123 | ECutMulti of exp * con * { rest : con }
114 | EFold of kind
115 124
116 | ECase of exp * (pat * exp) list * { disc : con, result : con } 125 | ECase of exp * (pat * exp) list * { disc : con, result : con }
117 126
118 | EError 127 | EError
119 | EUnif of exp option ref 128 | EUnif of exp option ref