123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123open!Core_kernelopen!Async_kernelopen!ImportmoduletypeEager_deferred_or_error=sigtype+'adeferredtype'at='aOr_error.tdeferredincludeMonad.Swithtype'at:='atvalfail:Error.t->_tvalok_unit:unittvalok_exn:'at->'adeferredvalof_exn:exn->_tvalof_exn_result:('a,exn)Result.tdeferred->'atvalerror:string->'a->('a->Sexp.t)->_tvalerror_s:Sexp.t->_tvalerror_string:string->_tvalerrorf:('a,unit,string,_t)format4->'avaltag:'at->tag:string->'atvaltag_s:'at->tag:Sexp.t->'atvaltag_arg:'at->string->'b->('b->Sexp.t)->'atvalunimplemented:string->_tvalfind_map_ok:'alist->f:('a->'bt)->'bt(** Note that [try_with f] is eager only in the [Ok] case. *)valtry_with:?extract_exn:bool->?run:[`Now|`Schedule]->?here:Lexing.position->?name:string->(unit->'adeferred)->'at(** Note that [try_with_join f] is eager only when no exception is raised by [f]. *)valtry_with_join:?extract_exn:bool->?run:[`Now|`Schedule]->?here:Lexing.position->?name:string->(unit->'at)->'atvalcombine_errors:'atlist->'alisttvalcombine_errors_unit:unittlist->unittvalfilter_ok_at_least_one:'atlist->'alisttmoduleList:Monad_sequence.Swithtype'amonad:='atwithtype'at:='alistvalrepeat_until_finished:'state->('state->[`Repeatof'state|`Finishedof'result]t)->'resulttendmoduletypeEager_deferred1=sigtype+'atincludeInvariant.S1withtype'at:='atincludeMonadwithtype'at:='atmoduleInfix:sigincludeMonad.Infixwithtype'at:='atval(>>>):'at->('a->unit)->unitendvalany:'atlist->'atvalany_unit:unittlist->unittvalboth:'at->'bt->('a*'b)tvalcreate:('aIvar.t->unit)->'atvaldon't_wait_for:unitt->unitvalis_determined:'at->boolvalnever:unit->_tvalok:'at->('a,_)Core_kernel.Result.ttvalpeek:'at->'aoptionvalunit:unittvalupon:'at->('a->unit)->unitvalvalue_exn:'at->'avalrepeat_until_finished:'state->('state->[`Repeatof'state|`Finishedof'result]t)->'resulttmoduleList:Monad_sequence.Swithtype'amonad:='atwithtype'at:='alistmoduleOr_error:Eager_deferred_or_errorwithtype'adeferred:='atendmoduletypeS=sigtype+'atincludeEager_deferred1withtype'at:='at(** @open *)(** Intended usage is to [open Eager_deferred.Use] to shadow operations from the
non-eager world and rebind them to their eager counterparts. *)moduleUse:sigmoduleDeferred:sigtypenonrec'at='atincludeEager_deferred1withtype'at:='atendincludeMonad.Infixwithtype'at:='atincludemoduletypeofDeferred.Let_syntaxvalupon:'at->('a->unit)->unitval(>>>):'at->('a->unit)->unitval(>>=?):('a,'e)Result.tt->('a->('b,'e)Result.tt)->('b,'e)Result.ttval(>>|?):('a,'e)Result.tt->('a->'b)->('b,'e)Result.ttendendmoduletypeEager_deferred=sigmoduletypeS=SincludeSwithtype'at:='aDeferred.tend