summaryrefslogtreecommitdiff
path: root/src/mono.sml
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adamc@hcoop.net>2008-08-03 09:26:49 -0400
committerGravatar Adam Chlipala <adamc@hcoop.net>2008-08-03 09:26:49 -0400
commit5e0563d3b00303d5053827e46811c93077455208 (patch)
tree84de1a0972562b31942273587987b2a27f615d8b /src/mono.sml
parent49c123050b2bc8a24f250fcc0d55e49484bc604c (diff)
First part of getting cases through monoize
Diffstat (limited to 'src/mono.sml')
-rw-r--r--src/mono.sml16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/mono.sml b/src/mono.sml
index b1636775..7ed1aca1 100644
--- a/src/mono.sml
+++ b/src/mono.sml
@@ -37,10 +37,24 @@ datatype typ' =
withtype typ = typ' located
+datatype patCon =
+ PConVar of int
+ | PConFfi of string * string
+
+datatype pat' =
+ PWild
+ | PVar of string
+ | PPrim of Prim.t
+ | PCon of patCon * pat option
+ | PRecord of (string * pat) list
+
+withtype pat = pat' located
+
datatype exp' =
EPrim of Prim.t
| ERel of int
| ENamed of int
+ | ECon of int * exp option
| EFfi of string * string
| EFfiApp of string * string * exp list
| EApp of exp * exp
@@ -49,6 +63,8 @@ datatype exp' =
| ERecord of (string * exp * typ) list
| EField of exp * string
+ | ECase of exp * (pat * exp) list * typ
+
| EStrcat of exp * exp
| EWrite of exp