comparison src/expl.sml @ 624:354800878b4d

Kind polymorphism through Explify
author Adam Chlipala <adamc@hcoop.net>
date Sun, 22 Feb 2009 16:32:56 -0500
parents 588b9d16b00a
children 70cbdcf5989b
comparison
equal deleted inserted replaced
623:588b9d16b00a 624:354800878b4d
35 | KName 35 | KName
36 | KUnit 36 | KUnit
37 | KTuple of kind list 37 | KTuple of kind list
38 | KRecord of kind 38 | KRecord of kind
39 39
40 | KRel of int
41 | KFun of string * kind
42
40 withtype kind = kind' located 43 withtype kind = kind' located
41 44
42 datatype con' = 45 datatype con' =
43 TFun of con * con 46 TFun of con * con
44 | TCFun of string * kind * con 47 | TCFun of string * kind * con
47 | CRel of int 50 | CRel of int
48 | CNamed of int 51 | CNamed of int
49 | CModProj of int * string list * string 52 | CModProj of int * string list * string
50 | CApp of con * con 53 | CApp of con * con
51 | CAbs of string * kind * con 54 | CAbs of string * kind * con
55
56 | CKAbs of string * con
57 | CKApp of con * kind
58 | TKFun of string * con
52 59
53 | CName of string 60 | CName of string
54 61
55 | CRecord of kind * (con * con) list 62 | CRecord of kind * (con * con) list
56 | CConcat of con * con 63 | CConcat of con * con
85 | EModProj of int * string list * string 92 | EModProj of int * string list * string
86 | EApp of exp * exp 93 | EApp of exp * exp
87 | EAbs of string * con * con * exp 94 | EAbs of string * con * con * exp
88 | ECApp of exp * con 95 | ECApp of exp * con
89 | ECAbs of string * kind * exp 96 | ECAbs of string * kind * exp
97
98 | EKAbs of string * exp
99 | EKApp of exp * kind
90 100
91 | ERecord of (con * exp * con) list 101 | ERecord of (con * exp * con) list
92 | EField of exp * con * { field : con, rest : con } 102 | EField of exp * con * { field : con, rest : con }
93 | EConcat of exp * con * exp * con 103 | EConcat of exp * con * exp * con
94 | ECut of exp * con * { field : con, rest : con } 104 | ECut of exp * con * { field : con, rest : con }