package tezos-lwt-result-stdlib
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=296bb5674bc6050afe6330326fbdd0dfc2255d414bfd6b79cc7666ac6b39316d
sha512=c061cd300a9410300851158d77bf8e56ca3c568b0b1161b38305e5b2efdcd9c746d391f832fdb2826f9a1d6babce10a9b764a4b04f5df42699f7314b9863123a
doc/bare_structs/Bare_structs/Hashtbl/Make_es/index.html
Module Hashtbl.Make_es
Source
Parameters
Signature
reset tbl
cancels and removes all the promises in tbl
, and resizes tbl
to its initial size.
val find_or_make :
('a, 'trace) t ->
key ->
(unit -> ('a, 'trace) Stdlib.result Lwt.t) ->
('a, 'trace) Stdlib.result Lwt.t
find_or_make tbl k make
behaves differently depending on k
being bound in tbl
:
- if
k
is bound intbl
thenfind_or_make tbl k make
returns the promisep
thatk
is bound to. Thisp
might be already fulfilled withOk _
or it might be pending. Thisp
cannot be already fulfilled withError _
or already rejected. This is becauseError
/rejected promises are removed from the table automatically. Note however that if thisp
is pending,p
might become fulfilled withError _
or become rejected. - if
k
is not bound intbl
thenmake ()
is called and the returned promisep
is bound tok
intbl
. Thenp
is returned. Whenp
is resolved, it may be removed automatically fromtbl
as described above.
remove tbl k
cancels the promise bound to k
in tbl
and removes it. If k
is not bound in tbl
it does nothing.
val iter_with_waiting_es :
(key -> 'a -> (unit, 'trace) Stdlib.result Lwt.t) ->
('a, 'trace) t ->
(unit, 'trace) Stdlib.result Lwt.t
iter_with_waiting_es f tbl
iterates f
over the bindings in tbl
.
Specifically, for each binding (k, p)
it waits for p
to be fulfilled with Ok v
and calls f k v
. If p
fulfills with Error _
or is rejected, then no call to f
is made for this binding. Note however that an Error
/rejection in one promise returned by f
interrupts the iteration.
It processes bindings one after the other: it waits for both the bound promise to resolve and then the call promise to resolve before continuing to the next binding.
val iter_with_waiting_ep :
(key -> 'a -> (unit, 'error) Stdlib.result Lwt.t) ->
('a, 'error) t ->
(unit, 'error list) Stdlib.result Lwt.t
iter_with_waiting_ep f tbl
iterates f
over the bindings in tbl
.
Specifically, for each binding (k, p)
it waits for p
to be fulfilled with Ok v
and calls f k v
. If p
fulfills with Error _
or is rejected, then no call is made for this binding.
Note however that if one (or more) of the promises returned by f
ends in Error
/rejection, the final result of this promise is an Error
/rejection. Even so, it only resolves once all the promises have.
It processes all bindings concurrently: it concurrently waits for all the bound promises to resolve and calls f
as they resolve.
val fold_with_waiting_es :
(key -> 'a -> 'b -> ('b, 'trace) Stdlib.result Lwt.t) ->
('a, 'trace) t ->
'b ->
('b, 'trace) Stdlib.result Lwt.t
fold_with_waiting_es f tbl init
folds init
with f
over the bindings in tbl
.
Specifically, for each binding (k, p)
it waits for p
to be fulfilled with Ok v
and determines the next accumulator by calling f k v acc
. If p
fulfills with Error _
or is rejected, then no call is made for this binding.
It processes bindings one after the other.
val fold_promises :
(key -> ('a, 'trace) Stdlib.result Lwt.t -> 'b -> 'b) ->
('a, 'trace) t ->
'b ->
'b
fold_promises f tbl init
folds over the table, passing the raw promises to f
. This means that f
can observe Error
/rejections.
This can be used to, e.g., count the number of resolved/unresolved promises.
fold_resolved f tbl init
folds over the already resolved promises of tbl
. More specifically, it folds over the v
for all the promises fulfilled with Ok v
that are bound in tbl
.