package containers

  1. Overview
  2. Docs
On This Page
  1. Lazy List
Legend:
Library
Module
Module type
Parameter
Class
Class type

Lazy List

  • since 0.17
type +'a t = 'a node lazy_t
and +'a node =
  1. | Nil
  2. | Cons of 'a * 'a t
val empty : 'a t

Empty list

val return : 'a -> 'a t

Return a computed value

val is_empty : _ t -> bool

Evaluates the head

val length : _ 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 module type of Infix
val (>|=) : 'a t -> ('a -> 'b) -> 'b t
val (>>=) : 'a t -> ('a -> 'b t) -> 'b t
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