Monads.RefineM
The elaboration monad is the "maximal" monad that can run code from any of the other monads.
include Basis.Monad.MonadReaderStateResult
with type global := St.t
with type local := RefineEnv.t
val read : RefineEnv.t m
val scope : (RefineEnv.t -> RefineEnv.t) -> 'a m -> 'a m
val run : St.t -> RefineEnv.t -> 'a m -> ('a, exn) Stdlib.result
val run_exn : St.t -> RefineEnv.t -> 'a m -> 'a
val throw : exn -> 'a m
val lift_conv_ : unit conversion -> unit m
val emit :
?lvl:Log.level ->
Basis.LexingUtil.span option ->
(Stdlib.Format.formatter -> 'a -> unit) ->
'a ->
unit m