]> Joshua Wise's Git repositories - snipe.git/blobdiff - util/symbol.sml
Add string pasting support to the gramamr.
[snipe.git] / util / symbol.sml
index 77878b47cf329ecbdd979de4be4e32db2dfec64a..3111761560c14f517d9d591dc14b606de91e64d0 100644 (file)
@@ -38,7 +38,12 @@ sig
   val elems : 'a table -> 'a list (* return all the data as a list *)
   val elemsi : 'a table -> (symbol * 'a) list (* return the symbols with the associated data *)
   val keys : 'a table -> symbol list (* just the symbols *)
-  val intersect : 'a table * 'a table -> 'a table
+  val intersect : ('a * 'a -> 'a) -> 'a table * 'a table -> 'a table
+  
+  val mapi : (symbol * 'a -> 'b) -> 'a table -> 'b table
+  val mapPartial : ('a -> 'b option) -> 'a table -> 'b table
+  val mapPartiali : (symbol * 'a -> 'b option) -> 'a table -> 'b table
+  val appi : (symbol * 'a -> unit) -> 'a table -> unit
 
   (* symbol set -- similar to a () Symbol.table, elements can be removed *)
   type set
@@ -104,7 +109,11 @@ struct
   fun elems t = Map.listItems t
   fun elemsi t = Map.listItemsi t
   fun keys t = Map.listKeys t
-  fun intersect (t1,t2) = Map.intersectWith (fn (a,_) => a) (t1,t2)
+  fun intersect binding (t1,t2) = Map.intersectWith binding (t1,t2)
+  fun mapi f t = Map.mapi f t
+  fun mapPartial f t = Map.mapPartial f t
+  fun mapPartiali f t = Map.mapPartiali f t
+  fun appi f t = Map.appi f t
 
   fun delimit' [] s = s
     | delimit' [x] s = s ^ x
This page took 0.021999 seconds and 4 git commands to generate.