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.t
val fold_left :
('a -> 'b -> ('a , 'e ) Alt.t ) ->
'a ->
('b , 'e ) t ->
('a , 'e ) Mon.t
val iteri : (int -> 'a -> (unit, 'e ) Alt.t ) -> ('a , 'e ) t -> (unit, 'e ) Mon.t
val fold_lefti :
('b -> int -> 'a -> ('b , 'e ) Alt.t ) ->
'b ->
('a , 'e ) t ->
('b , 'e ) Mon.t
val for_all : ('a -> (bool, 'e ) Alt.t ) -> ('a , 'e ) t -> (bool, 'e ) Mon.t
val exists : ('a -> (bool, 'e ) Alt.t ) -> ('a , 'e ) t -> (bool, 'e ) Mon.t
val find : ('a -> (bool, 'e ) Alt.t ) -> ('a , 'e ) t -> ('a option , 'e ) Mon.t
val find_map :
('a -> ('b option , 'e ) Alt.t ) ->
('a , 'e ) t ->
('b option , 'e ) Mon.t
val iter2 :
('a -> 'b -> (unit, 'e ) Alt.t ) ->
('a , 'e ) t ->
('b , 'e ) t ->
(unit, 'e ) Mon.t
val fold_left2 :
('a -> 'b -> 'c -> ('a , 'e ) Alt.t ) ->
'a ->
('b , 'e ) t ->
('c , 'e ) t ->
('a , 'e ) Mon.t
val for_all2 :
('a -> 'b -> (bool, 'e ) Alt.t ) ->
('a , 'e ) t ->
('b , 'e ) t ->
(bool, 'e ) Mon.t
val exists2 :
('a -> 'b -> (bool, 'e ) Alt.t ) ->
('a , 'e ) t ->
('b , 'e ) t ->
(bool, 'e ) Mon.t
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