Begin translation module
[tiger.ml.git] / compiler / src / lib / tiger / tiger_env_type.mli
index 825750c..c8810a7 100644 (file)
@@ -1,3 +1,5 @@
+module Sym = Tiger_symbol
+
 type unique
 
 type t =
@@ -7,25 +9,33 @@ type t =
   | String
   | Record of
       { unique : unique
-      ; fields : (Tiger_symbol.t * t) list
+      ; fields : record_fields
       }
   | Array of
       { unique : unique
       ; ty     : t
       }
-  | Name of Tiger_symbol.t * t option ref
+  | Name of Sym.t * t option ref
+and record_fields =
+  (Sym.t * t) list
 
 type env =
-  (Tiger_symbol.t, t ) Tiger_map.t
+  (Sym.t, t ) Tiger_map.t
 
 val built_in : env
 
 val is_equal  : t -> t -> bool
-val is_record : t -> bool
+
 val is_int    : t -> bool
+val is_string : t -> bool
+val is_array  : t -> bool
+val is_record : t -> bool
 val is_name   : t -> bool
 
-val new_record : (Tiger_symbol.t * t) list -> t
-val new_array  : t -> t
+val if_record : t -> f:(record_fields -> 'a) -> otherwise:(unit -> 'a) -> 'a
+val if_array  : t -> f:(t -> 'a)             -> otherwise:(unit -> 'a) -> 'a
+
+val new_record : name:Sym.t -> fields:record_fields -> t
+val new_array  : name:Sym.t -> ty:t -> t
 
 val to_string : t -> string
This page took 0.033354 seconds and 4 git commands to generate.