module CCLazy_list: sig
.. end
Lazy List
Since 0.17
type 'a
t = 'a node lazy_t
type 'a
node =
| |
Nil |
| |
Cons of 'a * 'a t |
val empty : 'a t
Empty list
val return : 'a -> 'a t
Return a computed value
val is_empty : 'a t -> bool
Evaluates the head
val length : 'a t -> int
length l
returns the number of elements in l
, eagerly (linear time).
Caution, will not terminate if l
is infinite
val cons : 'a -> 'a t -> 'a t
val head : 'a t -> ('a * 'a t) option
Evaluate head, return it, or None
if the list is empty
val map : f:('a -> 'b) -> 'a t -> 'b t
Lazy map
val filter : f:('a -> bool) -> 'a t -> 'a t
Filter values.
Since 0.18
val take : int -> 'a t -> 'a t
Take at most n values.
Since 0.18
val append : 'a t -> 'a t -> 'a t
Lazy concatenation
val flat_map : f:('a -> 'b t) -> 'a t -> 'b t
Monadic flatten + map
module Infix: sig
.. end
include CCLazy_list.Infix
type 'a
gen = unit -> 'a option
val of_gen : 'a gen -> 'a t
val of_list : 'a list -> 'a t
val to_list : 'a t -> 'a list
val to_list_rev : 'a t -> 'a list
val to_gen : 'a t -> 'a gen