mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-06 11:15:31 -05:00
add Lazy_list.filter
This commit is contained in:
parent
24add9d4f7
commit
560cba9754
2 changed files with 16 additions and 0 deletions
|
|
@ -40,6 +40,18 @@ let rec map ~f l =
|
|||
| lazy (Cons (x,tl)) -> Cons (f x, map ~f tl)
|
||||
)
|
||||
|
||||
let filter ~f l =
|
||||
let rec aux f l = match l with
|
||||
| lazy Nil -> Nil
|
||||
| lazy (Cons (x,tl)) when f x -> Cons (x, lazy (aux f tl))
|
||||
| lazy (Cons (_, tl)) -> aux f tl
|
||||
in
|
||||
lazy (aux f l)
|
||||
|
||||
(*$=
|
||||
[2;4;6] (of_list [1;2;3;4;5;6;7] |> filter ~f:(fun x -> x mod 2=0) |> to_list)
|
||||
*)
|
||||
|
||||
let rec append a b =
|
||||
lazy (
|
||||
match a with
|
||||
|
|
|
|||
|
|
@ -31,6 +31,10 @@ val head : 'a t -> ('a * 'a t) option
|
|||
val map : f:('a -> 'b) -> 'a t -> 'b t
|
||||
(** Lazy map *)
|
||||
|
||||
val filter : f:('a -> bool) -> 'a t -> 'a t
|
||||
(** Filter values
|
||||
@since NEXT_RELEASE *)
|
||||
|
||||
val append : 'a t -> 'a t -> 'a t
|
||||
(** Lazy concatenation *)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue