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
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