Add the binding to the table, returning a new table. The old binding
for this key, if it exists, is shadowed and will be restored upon
remove tbl k
.
Add the binding to the table, returning a new table. This erases
the current binding for key
, if any.
update tbl key f
calls f None
if key
doesn't belong in tbl
,
f (Some v)
if key -> v
otherwise; If f
returns None
then
key
is removed, else it returns Some v'
and key -> v'
is added.
Fresh copy of the table; the underlying structure is not shared anymore, so using both tables alternatively will be efficient.
val merge : f:(key ‑> [ `Left of 'a | `Right of 'b | `Both of 'a * 'b ] ‑> 'c option) ‑> 'a t ‑> 'b t ‑> 'c t
Merge two tables together into a new table. The function's argument
correspond to values associated with the key (if present); if the
function returns None
the key will not appear in the result.