mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-06 11:15:31 -05:00
Merge pull request #409 from dmbaturin/assoc-helpers
New assoc list helpers: `keys`, `values`, and `map_values`
This commit is contained in:
commit
322b15d757
3 changed files with 31 additions and 0 deletions
|
|
@ -1814,6 +1814,12 @@ module Assoc = struct
|
||||||
[1,"1"; 2,"2"] \
|
[1,"1"; 2,"2"] \
|
||||||
(Assoc.remove ~eq:CCInt.equal 3 [1,"1"; 2,"2"] |> lsort)
|
(Assoc.remove ~eq:CCInt.equal 3 [1,"1"; 2,"2"] |> lsort)
|
||||||
*)
|
*)
|
||||||
|
|
||||||
|
let keys l = map (fun (k, _) -> k) l
|
||||||
|
|
||||||
|
let values l = map (fun (_, v) -> v) l
|
||||||
|
|
||||||
|
let map_values f l = map (fun (k, v) -> (k, f v)) l
|
||||||
end
|
end
|
||||||
|
|
||||||
let assoc = Assoc.get_exn
|
let assoc = Assoc.get_exn
|
||||||
|
|
|
||||||
|
|
@ -747,6 +747,18 @@ module Assoc : sig
|
||||||
val remove : eq:('a->'a->bool) -> 'a -> ('a,'b) t -> ('a,'b) t
|
val remove : eq:('a->'a->bool) -> 'a -> ('a,'b) t -> ('a,'b) t
|
||||||
(** [remove ~eq k alist] returns the [alist] without the first pair with key [k], if any.
|
(** [remove ~eq k alist] returns the [alist] without the first pair with key [k], if any.
|
||||||
@since 0.17 *)
|
@since 0.17 *)
|
||||||
|
|
||||||
|
val keys : ('a, 'b) t -> 'a list
|
||||||
|
(** [keys alist] returns a list of all keys of [alist].
|
||||||
|
@since 3.8 *)
|
||||||
|
|
||||||
|
val values : ('a, 'b) t -> 'b list
|
||||||
|
(** [values alist] returns a list of all values of [alist].
|
||||||
|
@since 3.8 *)
|
||||||
|
|
||||||
|
val map_values : ('b -> 'c) -> ('a, 'b) t -> ('a, 'c) t
|
||||||
|
(** [map_values f alist] applies function [f] to all values of [alist].
|
||||||
|
@since 3.8 *)
|
||||||
end
|
end
|
||||||
|
|
||||||
val assoc : eq:('a -> 'a -> bool) -> 'a -> ('a * 'b) t -> 'b
|
val assoc : eq:('a -> 'a -> bool) -> 'a -> ('a * 'b) t -> 'b
|
||||||
|
|
|
||||||
|
|
@ -711,6 +711,19 @@ module Assoc : sig
|
||||||
val remove : eq:(('a->'a->bool) [@keep_label]) -> 'a -> ('a,'b) t -> ('a,'b) t
|
val remove : eq:(('a->'a->bool) [@keep_label]) -> 'a -> ('a,'b) t -> ('a,'b) t
|
||||||
(** [remove ~eq k alist] returns the [alist] without the first pair with key [k], if any.
|
(** [remove ~eq k alist] returns the [alist] without the first pair with key [k], if any.
|
||||||
@since 0.17 *)
|
@since 0.17 *)
|
||||||
|
|
||||||
|
val keys : ('a, 'b) t -> 'a list
|
||||||
|
(** [keys alist] returns a list of all keys of [alist].
|
||||||
|
@since 3.8 *)
|
||||||
|
|
||||||
|
val values : ('a, 'b) t -> 'b list
|
||||||
|
(** [values alist] returns a list of all values of [alist].
|
||||||
|
@since 3.8 *)
|
||||||
|
|
||||||
|
val map_values : ('b -> 'c) -> ('a, 'b) t -> ('a, 'c) t
|
||||||
|
(** [map_values f alist] applies function [f] to all values of [alist].
|
||||||
|
@since 3.8 *)
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
val assoc : eq:(('a -> 'a -> bool) [@keep_label]) -> 'a -> ('a * 'b) t -> 'b
|
val assoc : eq:(('a -> 'a -> bool) [@keep_label]) -> 'a -> ('a * 'b) t -> 'b
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue