diff src/cjr.sml @ 188:8e9f97508f0d

Datatype representation optimization
author Adam Chlipala <adamc@hcoop.net>
date Sun, 03 Aug 2008 19:49:21 -0400
parents 88d46972de53
children 890a61991263
line wrap: on
line diff
--- a/src/cjr.sml	Sun Aug 03 19:01:16 2008 -0400
+++ b/src/cjr.sml	Sun Aug 03 19:49:21 2008 -0400
@@ -29,11 +29,13 @@
 
 type 'a located = 'a ErrorMsg.located
 
+datatype datatype_kind = datatype Mono.datatype_kind
+
 datatype typ' =
          TTop
        | TFun of typ * typ
        | TRecord of int
-       | TDatatype of int * (string * int * typ option) list
+       | TDatatype of datatype_kind * int * (string * int * typ option) list
        | TFfi of string * string
 
 withtype typ = typ' located
@@ -46,7 +48,7 @@
          PWild
        | PVar of string * typ
        | PPrim of Prim.t
-       | PCon of patCon * pat option
+       | PCon of datatype_kind * patCon * pat option
        | PRecord of (string * pat * typ) list
 
 withtype pat = pat' located
@@ -55,7 +57,7 @@
          EPrim of Prim.t
        | ERel of int
        | ENamed of int
-       | ECon of patCon * exp option
+       | ECon of datatype_kind * patCon * exp option
        | EFfi of string * string
        | EFfiApp of string * string * exp list
        | EApp of exp * exp
@@ -72,7 +74,7 @@
 
 datatype decl' =
          DStruct of int * (string * typ) list
-       | DDatatype of string * int * (string * int * typ option) list
+       | DDatatype of datatype_kind * string * int * (string * int * typ option) list
        | DVal of string * int * typ * exp
        | DFun of string * int * (string * typ) list * typ * exp
        | DFunRec of (string * int * (string * typ) list * typ * exp) list