Module S2.Make Make is a functor to produce further M-like modules, but with parameter functions returning into a different monad. E.g., given module SeqMon = Make(Mon) and module SeqMonMun = SeqMon.Make(Mun) then SeqMonMun.map has type ('a -> ('b, 'e) Mun.t) -> ('a, 'e) t -> ('b, 'e) t.
Note that the functor parameter includes the necessary machinery to bundle the two monads together.
See the documentation of Sigs2.SEQMON2TRANSFORMERS for more details.
Parametersmodule Glue : sig ... end Signatureval iter : ('a -> (unit, 'e ) Alt.t ) -> ('a , 'e ) t -> (unit, 'e ) mon val fold_left :
('a -> 'b -> ('a , 'e ) Alt.t ) ->
'a ->
('b , 'e ) t ->
('a , 'e ) mon val iteri : (int -> 'a -> (unit, 'e ) Alt.t ) -> ('a , 'e ) t -> (unit, 'e ) mon val fold_lefti :
('b -> int -> 'a -> ('b , 'e ) Alt.t ) ->
'b ->
('a , 'e ) t ->
('b , 'e ) mon val for_all : ('a -> (bool, 'e ) Alt.t ) -> ('a , 'e ) t -> (bool, 'e ) mon val exists : ('a -> (bool, 'e ) Alt.t ) -> ('a , 'e ) t -> (bool, 'e ) mon val find : ('a -> (bool, 'e ) Alt.t ) -> ('a , 'e ) t -> ('a option , 'e ) mon val find_map :
('a -> ('b option , 'e ) Alt.t ) ->
('a , 'e ) t ->
('b option , 'e ) mon val iter2 :
('a -> 'b -> (unit, 'e ) Alt.t ) ->
('a , 'e ) t ->
('b , 'e ) t ->
(unit, 'e ) mon val fold_left2 :
('a -> 'b -> 'c -> ('a , 'e ) Alt.t ) ->
'a ->
('b , 'e ) t ->
('c , 'e ) t ->
('a , 'e ) mon val for_all2 :
('a -> 'b -> (bool, 'e ) Alt.t ) ->
('a , 'e ) t ->
('b , 'e ) t ->
(bool, 'e ) mon val exists2 :
('a -> 'b -> (bool, 'e ) Alt.t ) ->
('a , 'e ) t ->
('b , 'e ) t ->
(bool, 'e ) mon val init : int -> (int -> ('a , 'e ) Alt.t ) -> ('a , 'e ) t val unfold : ('b -> (('a * 'b ) option , 'e ) Alt.t ) -> 'b -> ('a , 'e ) t val forever : (unit -> ('a , 'e ) Alt.t ) -> ('a , 'e ) t val iterate : ('a -> ('a , 'e ) Alt.t ) -> 'a -> ('a , 'e ) t val map : ('a -> ('b , 'e ) Alt.t ) -> ('a , 'e ) t -> ('b , 'e ) t val mapi : (int -> 'a -> ('b , 'e ) Alt.t ) -> ('a , 'e ) t -> ('b , 'e ) t val filter : ('a -> (bool, 'e ) Alt.t ) -> ('a , 'e ) t -> ('a , 'e ) t val filter_map : ('a -> ('b option , 'e ) Alt.t ) -> ('a , 'e ) t -> ('b , 'e ) t val scan : ('b -> 'a -> ('b , 'e ) Alt.t ) -> 'b -> ('a , 'e ) t -> ('b , 'e ) t val take_while : ('a -> (bool, 'e ) Alt.t ) -> ('a , 'e ) t -> ('a , 'e ) t val drop_while : ('a -> (bool, 'e ) Alt.t ) -> ('a , 'e ) t -> ('a , 'e ) t val group : ('a -> 'a -> (bool, 'e ) Alt.t ) -> ('a , 'e ) t -> (('a , 'e ) t , 'e ) t val map2 :
('a -> 'b -> ('c , 'e ) Alt.t ) ->
('a , 'e ) t ->
('b , 'e ) t ->
('c , 'e ) t val map_product :
('a -> 'b -> ('c , 'e ) Alt.t ) ->
('a , 'e ) t ->
('b , 'e ) t ->
('c , 'e ) t val partition_map :
('a -> (('b , 'c ) Either.t , 'e ) Alt.t ) ->
('a , 'e ) t ->
('b , 'e ) t * ('c , 'e ) t val partition :
('a -> (bool, 'e ) Alt.t ) ->
('a , 'e ) t ->
('a , 'e ) t * ('a , 'e ) t