package revops

  1. Overview
  2. Docs
module M : MONAD
module Oprev : sig ... end
module Revop : sig ... end
val doop : 'a Oprev.t -> 'a Revop.t M.t
val undo : 'a Revop.t -> unit M.t
val peek : 'a Revop.t -> 'a
val compose : introduce:('a -> 'b -> 'c M.t) -> eliminate_first:('c -> 'a M.t) -> eliminate_second:('c -> 'b M.t) -> first:'a Oprev.t -> second:'b Oprev.t -> 'c Oprev.t
val compose_tuple : 'a Oprev.t -> 'b Oprev.t -> ('a * 'b) Oprev.t
val (+*) : 'a Oprev.t -> 'b Oprev.t -> ('a * 'b) Oprev.t
val run_in_context : 'a Oprev.t -> ('a -> 'b M.t) -> 'b M.t