sig
  type io = IO_
  type (_, _) Generic_util.App.T.app +=
      IO :
        (unit -> 'a) -> ('a, Generic_util_monad.IO.io) Generic_util.App.T.app
  val embed_io :
    (unit -> 'a) -> ('a, Generic_util_monad.IO.io) Generic_util.App.T.app
  val run_io : ('a, Generic_util_monad.IO.io) Generic_util.App.T.app -> 'a
  val io : Generic_util_monad.IO.io Generic_util_monad.monad
end