keen/col/multi-map

Source
multi-map[k, v] record (has private fields)
Unordered collection of pairs that supports lookup by key. Unlike with a map, keys are not unique. However, (key, value) pairs are unique. (Test using a[key][value])
list-new[k, v] (k, v) multi-map(pairs (k, v)[]) k key, v key
subscript[k, v] v set(a (k, v) multi-map, key k) k key, v key
~[k, v] (k, v) multi-map(a (k, v) multi-map, (key k, value v)) k key, v key
try-remove-pair[k, v] (k, v) multi-map option(a (k, v) multi-map, key k, value v) k key, v key
If the (key, value) pair exists in the map, this is the map without it. Else this is an empty option.
remove-pair[k, v] (k, v) multi-map(a (k, v) multi-map, key k, value v) k key, v key
Like try-remove-pair, but if a does not contain the pair, this just returns a.
try-remove-key[k, v] (k, v) multi-map option(a (k, v) multi-map, key k) k key, v key
If the key exists in the map, this is the map without all associated values. Else this is an empty option.
remove-key[k, v] (k, v) multi-map(a (k, v) multi-map, key k) k key, v key
Removes all values for the key (if any).
some[k, v] bool(a (k, v) multi-map, f bool mut((k, v))) k key, v key
multi-map-by-key[k, v] record
map (k, v) multi-map
by-key[k, v] (k, v) multi-map-by-key(a (k, v) multi-map)
some[k, v] bool(a (k, v) multi-map-by-key, f bool mut((k, v set))) k key, v key