mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-06 03:05:28 -05:00
Merge branch 'br-2.4.1'
This commit is contained in:
commit
83251c9efa
7 changed files with 13 additions and 17 deletions
|
|
@ -1,5 +1,9 @@
|
|||
= Changelog
|
||||
|
||||
== 2.4.1
|
||||
|
||||
- revert some compatibility-breaking changes in label modules
|
||||
|
||||
== 2.4
|
||||
|
||||
=== breaking:
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
opam-version: "2.0"
|
||||
name: "containers"
|
||||
version: "2.4"
|
||||
version: "2.4.1"
|
||||
author: "Simon Cruanes"
|
||||
maintainer: "simon.cruanes.2007@m4x.org"
|
||||
synopsis: "A modular, clean and powerful extension of the OCaml standard library"
|
||||
|
|
|
|||
|
|
@ -110,12 +110,10 @@ val reverse_in_place : 'a t -> unit
|
|||
(** [reverse_in_place a] reverses the array [a] in place. *)
|
||||
|
||||
val sorted : ('a -> 'a -> int) -> 'a t -> 'a array
|
||||
(* FIXME: better label this ~cmp ?? *)
|
||||
(** [sorted f a] makes a copy of [a] and sorts it with [f].
|
||||
@since 1.0 *)
|
||||
|
||||
val sort_indices : ('a -> 'a -> int) -> 'a t -> int array
|
||||
(* FIXME: better label this ~cmp ?? *)
|
||||
(** [sort_indices f a] returns a new array [b], with the same length as [a],
|
||||
such that [b.(i)] is the index at which the [i]-th element of [sorted f a]
|
||||
appears in [a]. [a] is not modified.
|
||||
|
|
@ -125,7 +123,6 @@ val sort_indices : ('a -> 'a -> int) -> 'a t -> int array
|
|||
@since 1.0 *)
|
||||
|
||||
val sort_ranking : ('a -> 'a -> int) -> 'a t -> int array
|
||||
(* FIXME: better label this ~cmp ?? *)
|
||||
(** [sort_ranking f a] returns a new array [b], with the same length as [a],
|
||||
such that [b.(i)] is the index at which the [i]-th element of [a] appears
|
||||
in [sorted f a]. [a] is not modified.
|
||||
|
|
|
|||
|
|
@ -108,12 +108,10 @@ val reverse_in_place : 'a t -> unit
|
|||
(** [reverse_in_place a] reverses the array [a] in place. *)
|
||||
|
||||
val sorted : f:('a -> 'a -> int) -> 'a t -> 'a array
|
||||
(* FIXME: better label this ~cmp ?? *)
|
||||
(** [sorted ~f a] makes a copy of [a] and sorts it with [~f].
|
||||
@since 1.0 *)
|
||||
|
||||
val sort_indices : f:('a -> 'a -> int) -> 'a t -> int array
|
||||
(* FIXME: better label this ~cmp ?? *)
|
||||
(** [sort_indices ~f a] returns a new array [b], with the same length as [a],
|
||||
such that [b.(i)] is the index at which the [i]-th element of [sorted ~f a]
|
||||
appears in [a]. [a] is not modified.
|
||||
|
|
@ -123,7 +121,6 @@ val sort_indices : f:('a -> 'a -> int) -> 'a t -> int array
|
|||
@since 1.0 *)
|
||||
|
||||
val sort_ranking : f:('a -> 'a -> int) -> 'a t -> int array
|
||||
(* FIXME: better label this ~cmp ?? *)
|
||||
(** [sort_ranking ~f a] returns a new array [b], with the same length as [a],
|
||||
such that [b.(i)] is the index at which the [i]-th element of [a] appears
|
||||
in [sorted ~f a]. [a] is not modified.
|
||||
|
|
|
|||
|
|
@ -377,9 +377,9 @@ val find_idx : ('a -> bool) -> 'a t -> (int * 'a) option
|
|||
(** [find_idx p x] returns [Some (i,x)] where [x] is the [i]-th element of [l],
|
||||
and [p x] holds. Otherwise returns [None]. *)
|
||||
|
||||
val remove : eq:('a -> 'a -> bool) -> 'a -> 'a t -> 'a t
|
||||
val remove : eq:('a -> 'a -> bool) -> key:'a -> 'a t -> 'a t
|
||||
(* FIXME: the original CCList.mli uses ~x instead of ~key !! *)
|
||||
(** [remove key l] removes every instance of [key] from [l]. Tail-recursive.
|
||||
(** [remove ~key l] removes every instance of [key] from [l]. Tail-recursive.
|
||||
@param eq equality function.
|
||||
@since 0.11 *)
|
||||
|
||||
|
|
@ -589,9 +589,8 @@ module Assoc : sig
|
|||
@since 0.16 *)
|
||||
|
||||
val update :
|
||||
eq:('a->'a->bool) -> ('b option -> 'b option) -> 'a -> ('a,'b) t -> ('a,'b) t
|
||||
(* FIXME: the original no labels mli kept the ~f label ! *)
|
||||
(** [update k f l] updates [l] on the key [k], by calling [f (get l k)]
|
||||
eq:('a->'a->bool) -> f:('b option -> 'b option) -> 'a -> ('a,'b) t -> ('a,'b) t
|
||||
(** [update k ~f l] updates [l] on the key [k], by calling [f (get l k)]
|
||||
and removing [k] if it returns [None], mapping [k] to [v'] if it
|
||||
returns [Some v'].
|
||||
@since 0.16 *)
|
||||
|
|
|
|||
|
|
@ -375,7 +375,7 @@ val find_idx : f:('a -> bool) -> 'a t -> (int * 'a) option
|
|||
(** [find_idx p x] returns [Some (i,x)] where [x] is the [i]-th element of [l],
|
||||
and [p x] holds. Otherwise returns [None]. *)
|
||||
|
||||
val remove : eq:(('a -> 'a -> bool) [@keep_label]) -> key:'a -> 'a t -> 'a t
|
||||
val remove : eq:(('a -> 'a -> bool) [@keep_label]) -> key:('a [@keep_label]) -> 'a t -> 'a t
|
||||
(* FIXME: the original CCList.mli uses ~x instead of ~key !! *)
|
||||
(** [remove ~key l] removes every instance of [key] from [l]. Tail-recursive.
|
||||
@param eq equality function.
|
||||
|
|
@ -587,8 +587,7 @@ module Assoc : sig
|
|||
@since 0.16 *)
|
||||
|
||||
val update :
|
||||
eq:(('a->'a->bool) [@keep_label]) -> f:('b option -> 'b option) -> 'a -> ('a,'b) t -> ('a,'b) t
|
||||
(* FIXME: the original no labels mli kept the ~f label ! *)
|
||||
eq:(('a->'a->bool) [@keep_label]) -> f:(('b option -> 'b option) [@keep_label]) -> 'a -> ('a,'b) t -> ('a,'b) t
|
||||
(** [update k ~f l] updates [l] on the key [k], by calling [f (get l k)]
|
||||
and removing [k] if it returns [None], mapping [k] to [v'] if it
|
||||
returns [Some v'].
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ let search_all pat s =
|
|||
List.rev (search_rest [] 0)
|
||||
;;
|
||||
|
||||
(* replase first occurence of pat with subst in s *)
|
||||
(* replace first occurrence of pat with subst in s *)
|
||||
let replace_first pat subst s =
|
||||
let pos = search pat s 0 in
|
||||
let patl = String.length pat
|
||||
|
|
@ -43,7 +43,7 @@ let replace_first pat subst s =
|
|||
Bytes.unsafe_to_string buf
|
||||
;;
|
||||
|
||||
(* replase first occurence of pat with subst in s *)
|
||||
(* replace all occurrences of pat with subst in s *)
|
||||
let replace_all pat subst s =
|
||||
let pos = search_all pat s in
|
||||
let patl = String.length pat
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue