sig
type 'a t = 'a * [ `New | `Same ]
val return_same : 'a -> 'a SimplM.t
val return_new : 'a -> 'a SimplM.t
val return : 'a -> 'a SimplM.t
val get : 'a SimplM.t -> 'a
val is_new : 'a SimplM.t -> bool
val is_same : 'a SimplM.t -> bool
val ( >>= ) : 'a SimplM.t -> ('a -> 'b SimplM.t) -> 'b SimplM.t
val map : ('a -> 'b) -> 'a SimplM.t -> 'b SimplM.t
val app_list : ('a -> 'a SimplM.t) list -> 'a -> 'a SimplM.t
val map_l : ('a -> 'b SimplM.t) -> 'a list -> 'b list SimplM.t
val fold_l : ('a -> 'b -> 'a SimplM.t) -> 'a -> 'b list -> 'a SimplM.t
module Infix :
sig
val ( >>= ) : 'a SimplM.t -> ('a -> 'b SimplM.t) -> 'b SimplM.t
val ( >|= ) : 'a SimplM.t -> ('a -> 'b) -> 'b SimplM.t
end
end