package monadlib

  1. Overview
  2. Docs

Creation of a stream with underlying type 'a CollectionM.m.

Parameters

module M : sig ... end

Signature

include StreamC with type 'a t = 'a M.m LazyList.node_t and type 'a m = 'a M.m LazyList.t
include Stream with type 'a t = 'a M.m LazyList.node_t with type 'a m = 'a M.m LazyList.t
type 'a t = 'a M.m LazyList.node_t
include BaseLazyPlus with type 'a m = 'a t Lazy.t with type 'a m = 'a M.m LazyList.t
include BatInterfaces.Monad with type 'a m = 'a t Lazy.t with type 'a m = 'a M.m LazyList.t
type 'a m = 'a M.m LazyList.t

The type of a monad producing values of type 'a.

val iterate : ('a m -> 'a m) -> 'a m -> 'a m

The sum of the stream [f x, f (f x), f (f (f x)),...]

val delay : 'a m -> 'a m

Delay to prevent deadlock.

val to_depth : int -> 'a m -> 'a m

Search to some depth.

include BaseCollectionM with type 'a m := 'a m
include BaseLazyPlus with type 'a m := 'a m
include BatInterfaces.Monad with type 'a m := 'a m
val bind : 'a m -> ('a -> 'b m) -> 'b m

Monadic binding.

bind m f executes first m then f, using the result of m.

val zero : unit -> 'a m
val lplus : 'a m -> 'a m Lazy.t -> 'a m
val null : 'a m -> bool

null x implies that x is zero. If you do not want to or cannot answer whether a given x is zero, then null x should be false.

val difference : ('a -> 'a -> bool) -> 'a m -> 'a m -> 'a m
val unique : ('a -> 'a -> bool) -> 'a m -> 'a m
val maxima : ('a -> 'a -> bool) -> 'a m -> 'a m
val nub : ('a -> 'a -> bool) -> 'a m -> 'a m
val lift_cmp : ('a -> 'a -> bool) -> ('a m -> 'a m) -> 'a m -> 'a m
include Applicative.Base with type 'a m := 'a m
val return : 'a -> 'a m
val ap : ('a -> 'b) m -> 'a m -> 'b m
OCaml

Innovation. Community. Security.