mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-07 19:55:31 -05:00
add CCList.chunks
This commit is contained in:
parent
e037ca1afa
commit
ae886c2f08
3 changed files with 25 additions and 0 deletions
|
|
@ -922,6 +922,17 @@ let sublists_of_len ?(last=fun _ -> None) ?offset n l =
|
||||||
[[1;2]; [3;4]] (subs 2 [1;2;3;4;5])
|
[[1;2]; [3;4]] (subs 2 [1;2;3;4;5])
|
||||||
*)
|
*)
|
||||||
|
|
||||||
|
let chunks n l = sublists_of_len ~last:(fun x -> Some x) n l
|
||||||
|
|
||||||
|
(*$Q
|
||||||
|
Q.(small_list small_int) (fun l -> \
|
||||||
|
l = (chunks 3 l |> List.flatten))
|
||||||
|
Q.(small_list small_int) (fun l -> \
|
||||||
|
l = (chunks 5 l |> List.flatten))
|
||||||
|
Q.(small_list small_int) (fun l -> \
|
||||||
|
List.for_all (fun u -> List.length u <= 5) (chunks 5 l))
|
||||||
|
*)
|
||||||
|
|
||||||
let intersperse x l =
|
let intersperse x l =
|
||||||
let rec aux_direct i x l = match l with
|
let rec aux_direct i x l = match l with
|
||||||
| [] -> []
|
| [] -> []
|
||||||
|
|
|
||||||
|
|
@ -323,6 +323,13 @@ val sublists_of_len :
|
||||||
@since 1.0, but only
|
@since 1.0, but only
|
||||||
@since 1.5 with labels *)
|
@since 1.5 with labels *)
|
||||||
|
|
||||||
|
val chunks : int -> 'a list -> 'a list list
|
||||||
|
(** [chunks n l] returns consecutives chunks of size at most [n] from [l].
|
||||||
|
Each item of [l] will occur in exactly one chunk. Only the last chunk
|
||||||
|
might be of length smaller than [n].
|
||||||
|
Invariant: [(chunks n l |> List.flatten) = l].
|
||||||
|
@since NEXT_RELEASE *)
|
||||||
|
|
||||||
val intersperse : 'a -> 'a list -> 'a list
|
val intersperse : 'a -> 'a list -> 'a list
|
||||||
(** [intersperse x l] inserts the element [x] between adjacent elements of the list [l].
|
(** [intersperse x l] inserts the element [x] between adjacent elements of the list [l].
|
||||||
@since 2.1, but only
|
@since 2.1, but only
|
||||||
|
|
|
||||||
|
|
@ -327,6 +327,13 @@ val sublists_of_len :
|
||||||
@since 1.0, but only
|
@since 1.0, but only
|
||||||
@since 1.5 with labels *)
|
@since 1.5 with labels *)
|
||||||
|
|
||||||
|
val chunks : int -> 'a list -> 'a list list
|
||||||
|
(** [chunks n l] returns consecutives chunks of size at most [n] from [l].
|
||||||
|
Each item of [l] will occur in exactly one chunk. Only the last chunk
|
||||||
|
might be of length smaller than [n].
|
||||||
|
Invariant: [(chunks n l |> List.flatten) = l].
|
||||||
|
@since NEXT_RELEASE *)
|
||||||
|
|
||||||
val intersperse : x:'a -> 'a list -> 'a list
|
val intersperse : x:'a -> 'a list -> 'a list
|
||||||
(** [intersperse ~x l] inserts the element [x] between adjacent elements of the list [l].
|
(** [intersperse ~x l] inserts the element [x] between adjacent elements of the list [l].
|
||||||
@since 2.1, but only
|
@since 2.1, but only
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue