Eager_deferred partially implements the Deferred interface, with a type 'a t
equal to 'a Deferred.t, but where the operations are "eager", that is built upon a
world where bind, map, and upon eagerly apply their closure without preemption
in the case the deferred they are working with is already determined.
The goal with that approach is that one can locally write the following to switch to such a world.
open Use_eager_deferredWe do not intend at first for this to implement the entire Deferred interface,
because some of this will require more experimentation and discussions. We can
proceed incrementally to enrich this interface.
test/test_eager_deferred verifies that this interface is a sub interface of the
Deferred interface. For documentation, refer to
Deferred.
include sig ... end with type a t := a Async_kernel__.Deferred1.tinclude Core_kernel.Invariant.S1 with type a t := a tval invariant : 'a Base__.Invariant_intf.inv ‑> 'a t Base__.Invariant_intf.invinclude Core_kernel.Monad with type a t := a tinclude Base__.Monad_intf.S_without_syntax with type a t := a tinclude Base__.Monad_intf.Infix with type a t := a tmodule Monad_infix : Base__.Monad_intf.Infix with type a t := a tmodule Infix : sig ... endval don't_wait_for : unit t ‑> unitval is_determined : 'a t ‑> boolval never : unit ‑> _ tval ok : 'a t ‑> ('a, _) Core_kernel.Result.t tval peek : 'a t ‑> 'a optionval unit : unit tval upon : 'a t ‑> ('a ‑> unit) ‑> unitval value_exn : 'a t ‑> 'amodule List : Async_kernel__.Deferred1.Monad_sequence with type a t := a listmodule Or_error = Async_kernel__.Eager_deferred_or_error