package octez-proto-libs
type 'a t = unit -> 'a node
val empty : 'a t
val return : 'a -> 'a t
val fold_left : ('a -> 'b -> 'a) -> 'a -> 'b t -> 'a
val iter : ('a -> unit) -> 'a t -> unit
val unfold : ('b -> ('a * 'b) option) -> 'b -> 'a t
Lwtreslib-specific extensions
val first : 'a t -> 'a option
first s
is None
if s
is empty, it is Some x
where x
is the first element of s
otherwise.
Note that first
forces the first element of the sequence, which can have side-effects or be computationally expensive. Consider, e.g., the case where s = filter (fun …) s'
: first s
can force multiple of the values from s'
.
val fold_left_e :
('a -> 'b -> ('a, 'trace) Pervasives.result) ->
'a ->
'b t ->
('a, 'trace) Pervasives.result
val fold_left_es :
('a -> 'b -> ('a, 'trace) Pervasives.result Lwt.t) ->
'a ->
'b t ->
('a, 'trace) Pervasives.result Lwt.t
Similar to fold_left
but wraps the traversing in result Lwt.t
. Each step of the traversal is started after the previous one resolved. The traversal is interrupted if one of the step is rejected or is fulfilled with Error _
.
val iter_e :
('a -> (unit, 'trace) Pervasives.result) ->
'a t ->
(unit, 'trace) Pervasives.result
val iter_es :
('a -> (unit, 'trace) Pervasives.result Lwt.t) ->
'a t ->
(unit, 'trace) Pervasives.result Lwt.t
Similar to iter
but wraps the iteration in result Lwt.t
. Each step of the iteration is started after the previous one resolved. The iteration is interrupted if one of the promise is rejected of fulfilled with an Error _
.
val iter_ep :
('a -> (unit, 'error Error_monad.trace) Pervasives.result Lwt.t) ->
'a t ->
(unit, 'error Error_monad.trace) Pervasives.result Lwt.t
Similar to iter
but wraps the iteration in result Lwt.t
. All the steps of the iteration are started concurrently. The promise iter_ep
resolves once all the promises of the traversal resolve. At this point it either:
- is rejected if at least one of the promises is, otherwise
- is fulfilled with
Error _
if at least one of the promises is, otherwise - is fulfilled with
Ok ()
if all the promises are.