sig
module type T =
sig
type 'a t
val bind :
'a Xml_wrap.T.t -> ('a -> 'b Xml_wrap.T.t) -> 'b Xml_wrap.T.t
val return : 'a -> 'a Xml_wrap.T.t
val fmap : ('a -> 'b) -> 'a Xml_wrap.T.t -> 'b Xml_wrap.T.t
val fmap2 :
('a -> 'b -> 'c) ->
'a Xml_wrap.T.t -> 'b Xml_wrap.T.t -> 'c Xml_wrap.T.t
val fmap3 :
('a -> 'b -> 'c -> 'd) ->
'a Xml_wrap.T.t ->
'b Xml_wrap.T.t -> 'c Xml_wrap.T.t -> 'd Xml_wrap.T.t
val fmap4 :
('a -> 'b -> 'c -> 'd -> 'e) ->
'a Xml_wrap.T.t ->
'b Xml_wrap.T.t ->
'c Xml_wrap.T.t -> 'd Xml_wrap.T.t -> 'e Xml_wrap.T.t
val fmap5 :
('a -> 'b -> 'c -> 'd -> 'e -> 'f) ->
'a Xml_wrap.T.t ->
'b Xml_wrap.T.t ->
'c Xml_wrap.T.t ->
'd Xml_wrap.T.t -> 'e Xml_wrap.T.t -> 'f Xml_wrap.T.t
end
module NoWrap :
sig
type 'a t = 'a
val bind : 'a t -> ('a -> 'b t) -> 'b t
val return : 'a -> 'a t
val fmap : ('a -> 'b) -> 'a t -> 'b t
val fmap2 : ('a -> 'b -> 'c) -> 'a t -> 'b t -> 'c t
val fmap3 : ('a -> 'b -> 'c -> 'd) -> 'a t -> 'b t -> 'c t -> 'd t
val fmap4 :
('a -> 'b -> 'c -> 'd -> 'e) -> 'a t -> 'b t -> 'c t -> 'd t -> 'e t
val fmap5 :
('a -> 'b -> 'c -> 'd -> 'e -> 'f) ->
'a t -> 'b t -> 'c t -> 'd t -> 'e t -> 'f t
end
end