sig
module type Monad =
sig
type +'a m
val return : 'a -> 'a Deriving_monad.Monad.m
val fail : string -> 'a Deriving_monad.Monad.m
val ( >>= ) :
'a Deriving_monad.Monad.m ->
('a -> 'b Deriving_monad.Monad.m) -> 'b Deriving_monad.Monad.m
val ( >> ) :
'a Deriving_monad.Monad.m ->
'b Deriving_monad.Monad.m -> 'b Deriving_monad.Monad.m
end
module type MonadPlus =
sig
type +'a m
val return : 'a -> 'a m
val fail : string -> 'a m
val ( >>= ) : 'a m -> ('a -> 'b m) -> 'b m
val ( >> ) : 'a m -> 'b m -> 'b m
val mzero : 'a m
val mplus : 'a m -> 'a m -> 'a m
end
module MonadDefault :
functor
(M : sig
type +'a m
val return : 'a -> 'a Deriving_monad.MonadDefault.m
val fail : string -> 'a Deriving_monad.MonadDefault.m
val ( >>= ) :
'a Deriving_monad.MonadDefault.m ->
('a -> 'b Deriving_monad.MonadDefault.m) ->
'b Deriving_monad.MonadDefault.m
end) ->
sig
type 'a m = 'a M.m
val return : 'a -> 'a m
val fail : string -> 'a m
val ( >>= ) : 'a m -> ('a -> 'b m) -> 'b m
val ( >> ) : 'a m -> 'b m -> 'b m
end
module Monad_option :
sig
type 'a m = 'a option
val return : 'a -> 'a m
val fail : string -> 'a m
val ( >>= ) : 'a m -> ('a -> 'b m) -> 'b m
val ( >> ) : 'a m -> 'b m -> 'b m
val mzero : 'a m
val mplus : 'a m -> 'a m -> 'a m
end
module Monad_list :
sig
type 'a m = 'a list
val return : 'a -> 'a m
val fail : string -> 'a m
val ( >>= ) : 'a m -> ('a -> 'b m) -> 'b m
val ( >> ) : 'a m -> 'b m -> 'b m
val mzero : 'a m
val mplus : 'a m -> 'a m -> 'a m
end
module IO :
sig
type +'a m
val return : 'a -> 'a m
val fail : string -> 'a m
val ( >>= ) : 'a m -> ('a -> 'b m) -> 'b m
val ( >> ) : 'a m -> 'b m -> 'b m
val putStr : string -> unit m
val runIO : 'a m -> 'a
val mkIO : (unit -> 'b) -> 'b m
end
module type MonadUtilsSig =
sig
type +'a m
val return : 'a -> 'a m
val fail : string -> 'a m
val ( >>= ) : 'a m -> ('a -> 'b m) -> 'b m
val ( >> ) : 'a m -> 'b m -> 'b m
val liftM : ('a -> 'b) -> 'a m -> 'b m
val liftM2 : ('a -> 'b -> 'c) -> 'a m -> 'b m -> 'c m
val liftM3 : ('a -> 'b -> 'c -> 'd) -> 'a m -> 'b m -> 'c m -> 'd m
val liftM4 :
('a -> 'b -> 'c -> 'd -> 'e) -> 'a m -> 'b m -> 'c m -> 'd m -> 'e m
val liftM5 :
('a -> 'b -> 'c -> 'd -> 'e -> 'f) ->
'a m -> 'b m -> 'c m -> 'd m -> 'e m -> 'f m
val ap : ('a -> 'b) m -> 'a m -> 'b m
val sequence : 'a m list -> 'a list m
val sequence_ : 'a m list -> unit m
val mapM : ('a -> 'b m) -> 'a list -> 'b list m
val mapM_ : ('a -> 'b m) -> 'a list -> unit m
val ( =<< ) : ('a -> 'b m) -> 'a m -> 'b m
val join : 'a m m -> 'a m
val filterM : ('a -> bool m) -> 'a list -> 'a list m
val mapAndUnzipM :
('a -> ('b * 'c) m) -> 'a list -> ('b list * 'c list) m
val zipWithM : ('a -> 'b -> 'c m) -> 'a list -> 'b list -> 'c list m
val zipWithM_ : ('a -> 'b -> 'c m) -> 'a list -> 'b list -> unit m
val foldM : ('a -> 'b -> 'a m) -> 'a -> 'b list -> 'a m
val foldM_ : ('a -> 'b -> 'a m) -> 'a -> 'b list -> unit m
val replicateM : int -> 'a m -> 'a list m
val replicateM_ : int -> 'a m -> unit m
val quand : bool -> unit m -> unit m
val unless : bool -> unit m -> unit m
end
module MonadUtils :
functor (M : Monad) ->
sig
type 'a m = 'a M.m
val return : 'a -> 'a m
val fail : string -> 'a m
val ( >>= ) : 'a m -> ('a -> 'b m) -> 'b m
val ( >> ) : 'a m -> 'b m -> 'b m
val liftM : ('a -> 'b) -> 'a m -> 'b m
val liftM2 : ('a -> 'b -> 'c) -> 'a m -> 'b m -> 'c m
val liftM3 : ('a -> 'b -> 'c -> 'd) -> 'a m -> 'b m -> 'c m -> 'd m
val liftM4 :
('a -> 'b -> 'c -> 'd -> 'e) ->
'a m -> 'b m -> 'c m -> 'd m -> 'e m
val liftM5 :
('a -> 'b -> 'c -> 'd -> 'e -> 'f) ->
'a m -> 'b m -> 'c m -> 'd m -> 'e m -> 'f m
val ap : ('a -> 'b) m -> 'a m -> 'b m
val sequence : 'a m list -> 'a list m
val sequence_ : 'a m list -> unit m
val mapM : ('a -> 'b m) -> 'a list -> 'b list m
val mapM_ : ('a -> 'b m) -> 'a list -> unit m
val ( =<< ) : ('a -> 'b m) -> 'a m -> 'b m
val join : 'a m m -> 'a m
val filterM : ('a -> bool m) -> 'a list -> 'a list m
val mapAndUnzipM :
('a -> ('b * 'c) m) -> 'a list -> ('b list * 'c list) m
val zipWithM : ('a -> 'b -> 'c m) -> 'a list -> 'b list -> 'c list m
val zipWithM_ : ('a -> 'b -> 'c m) -> 'a list -> 'b list -> unit m
val foldM : ('a -> 'b -> 'a m) -> 'a -> 'b list -> 'a m
val foldM_ : ('a -> 'b -> 'a m) -> 'a -> 'b list -> unit m
val replicateM : int -> 'a m -> 'a list m
val replicateM_ : int -> 'a m -> unit m
val quand : bool -> unit m -> unit m
val unless : bool -> unit m -> unit m
end
module type MonadPlusUtilsSig =
sig
type +'a m
val return : 'a -> 'a m
val fail : string -> 'a m
val ( >>= ) : 'a m -> ('a -> 'b m) -> 'b m
val ( >> ) : 'a m -> 'b m -> 'b m
val liftM : ('a -> 'b) -> 'a m -> 'b m
val liftM2 : ('a -> 'b -> 'c) -> 'a m -> 'b m -> 'c m
val liftM3 : ('a -> 'b -> 'c -> 'd) -> 'a m -> 'b m -> 'c m -> 'd m
val liftM4 :
('a -> 'b -> 'c -> 'd -> 'e) -> 'a m -> 'b m -> 'c m -> 'd m -> 'e m
val liftM5 :
('a -> 'b -> 'c -> 'd -> 'e -> 'f) ->
'a m -> 'b m -> 'c m -> 'd m -> 'e m -> 'f m
val ap : ('a -> 'b) m -> 'a m -> 'b m
val sequence : 'a m list -> 'a list m
val sequence_ : 'a m list -> unit m
val mapM : ('a -> 'b m) -> 'a list -> 'b list m
val mapM_ : ('a -> 'b m) -> 'a list -> unit m
val ( =<< ) : ('a -> 'b m) -> 'a m -> 'b m
val join : 'a m m -> 'a m
val filterM : ('a -> bool m) -> 'a list -> 'a list m
val mapAndUnzipM :
('a -> ('b * 'c) m) -> 'a list -> ('b list * 'c list) m
val zipWithM : ('a -> 'b -> 'c m) -> 'a list -> 'b list -> 'c list m
val zipWithM_ : ('a -> 'b -> 'c m) -> 'a list -> 'b list -> unit m
val foldM : ('a -> 'b -> 'a m) -> 'a -> 'b list -> 'a m
val foldM_ : ('a -> 'b -> 'a m) -> 'a -> 'b list -> unit m
val replicateM : int -> 'a m -> 'a list m
val replicateM_ : int -> 'a m -> unit m
val quand : bool -> unit m -> unit m
val unless : bool -> unit m -> unit m
val mzero : 'a m
val mplus : 'a m -> 'a m -> 'a m
val guard : bool -> unit m
val msum : 'a m list -> 'a m
end
module MonadPlusUtils :
functor (M : MonadPlus) ->
sig
type 'a m = 'a M.m
val return : 'a -> 'a m
val fail : string -> 'a m
val ( >>= ) : 'a m -> ('a -> 'b m) -> 'b m
val ( >> ) : 'a m -> 'b m -> 'b m
val liftM : ('a -> 'b) -> 'a m -> 'b m
val liftM2 : ('a -> 'b -> 'c) -> 'a m -> 'b m -> 'c m
val liftM3 : ('a -> 'b -> 'c -> 'd) -> 'a m -> 'b m -> 'c m -> 'd m
val liftM4 :
('a -> 'b -> 'c -> 'd -> 'e) ->
'a m -> 'b m -> 'c m -> 'd m -> 'e m
val liftM5 :
('a -> 'b -> 'c -> 'd -> 'e -> 'f) ->
'a m -> 'b m -> 'c m -> 'd m -> 'e m -> 'f m
val ap : ('a -> 'b) m -> 'a m -> 'b m
val sequence : 'a m list -> 'a list m
val sequence_ : 'a m list -> unit m
val mapM : ('a -> 'b m) -> 'a list -> 'b list m
val mapM_ : ('a -> 'b m) -> 'a list -> unit m
val ( =<< ) : ('a -> 'b m) -> 'a m -> 'b m
val join : 'a m m -> 'a m
val filterM : ('a -> bool m) -> 'a list -> 'a list m
val mapAndUnzipM :
('a -> ('b * 'c) m) -> 'a list -> ('b list * 'c list) m
val zipWithM : ('a -> 'b -> 'c m) -> 'a list -> 'b list -> 'c list m
val zipWithM_ : ('a -> 'b -> 'c m) -> 'a list -> 'b list -> unit m
val foldM : ('a -> 'b -> 'a m) -> 'a -> 'b list -> 'a m
val foldM_ : ('a -> 'b -> 'a m) -> 'a -> 'b list -> unit m
val replicateM : int -> 'a m -> 'a list m
val replicateM_ : int -> 'a m -> unit m
val quand : bool -> unit m -> unit m
val unless : bool -> unit m -> unit m
val mzero : 'a m
val mplus : 'a m -> 'a m -> 'a m
val guard : bool -> unit m
val msum : 'a m list -> 'a m
end
module MonadPlusUtils_option :
sig
type 'a m = 'a Monad_option.m
val return : 'a -> 'a m
val fail : string -> 'a m
val ( >>= ) : 'a m -> ('a -> 'b m) -> 'b m
val ( >> ) : 'a m -> 'b m -> 'b m
val liftM : ('a -> 'b) -> 'a m -> 'b m
val liftM2 : ('a -> 'b -> 'c) -> 'a m -> 'b m -> 'c m
val liftM3 : ('a -> 'b -> 'c -> 'd) -> 'a m -> 'b m -> 'c m -> 'd m
val liftM4 :
('a -> 'b -> 'c -> 'd -> 'e) -> 'a m -> 'b m -> 'c m -> 'd m -> 'e m
val liftM5 :
('a -> 'b -> 'c -> 'd -> 'e -> 'f) ->
'a m -> 'b m -> 'c m -> 'd m -> 'e m -> 'f m
val ap : ('a -> 'b) m -> 'a m -> 'b m
val sequence : 'a m list -> 'a list m
val sequence_ : 'a m list -> unit m
val mapM : ('a -> 'b m) -> 'a list -> 'b list m
val mapM_ : ('a -> 'b m) -> 'a list -> unit m
val ( =<< ) : ('a -> 'b m) -> 'a m -> 'b m
val join : 'a m m -> 'a m
val filterM : ('a -> bool m) -> 'a list -> 'a list m
val mapAndUnzipM :
('a -> ('b * 'c) m) -> 'a list -> ('b list * 'c list) m
val zipWithM : ('a -> 'b -> 'c m) -> 'a list -> 'b list -> 'c list m
val zipWithM_ : ('a -> 'b -> 'c m) -> 'a list -> 'b list -> unit m
val foldM : ('a -> 'b -> 'a m) -> 'a -> 'b list -> 'a m
val foldM_ : ('a -> 'b -> 'a m) -> 'a -> 'b list -> unit m
val replicateM : int -> 'a m -> 'a list m
val replicateM_ : int -> 'a m -> unit m
val quand : bool -> unit m -> unit m
val unless : bool -> unit m -> unit m
val mzero : 'a m
val mplus : 'a m -> 'a m -> 'a m
val guard : bool -> unit m
val msum : 'a m list -> 'a m
end
module MonadPlusUtils_list :
sig
type 'a m = 'a Monad_list.m
val return : 'a -> 'a m
val fail : string -> 'a m
val ( >>= ) : 'a m -> ('a -> 'b m) -> 'b m
val ( >> ) : 'a m -> 'b m -> 'b m
val liftM : ('a -> 'b) -> 'a m -> 'b m
val liftM2 : ('a -> 'b -> 'c) -> 'a m -> 'b m -> 'c m
val liftM3 : ('a -> 'b -> 'c -> 'd) -> 'a m -> 'b m -> 'c m -> 'd m
val liftM4 :
('a -> 'b -> 'c -> 'd -> 'e) -> 'a m -> 'b m -> 'c m -> 'd m -> 'e m
val liftM5 :
('a -> 'b -> 'c -> 'd -> 'e -> 'f) ->
'a m -> 'b m -> 'c m -> 'd m -> 'e m -> 'f m
val ap : ('a -> 'b) m -> 'a m -> 'b m
val sequence : 'a m list -> 'a list m
val sequence_ : 'a m list -> unit m
val mapM : ('a -> 'b m) -> 'a list -> 'b list m
val mapM_ : ('a -> 'b m) -> 'a list -> unit m
val ( =<< ) : ('a -> 'b m) -> 'a m -> 'b m
val join : 'a m m -> 'a m
val filterM : ('a -> bool m) -> 'a list -> 'a list m
val mapAndUnzipM :
('a -> ('b * 'c) m) -> 'a list -> ('b list * 'c list) m
val zipWithM : ('a -> 'b -> 'c m) -> 'a list -> 'b list -> 'c list m
val zipWithM_ : ('a -> 'b -> 'c m) -> 'a list -> 'b list -> unit m
val foldM : ('a -> 'b -> 'a m) -> 'a -> 'b list -> 'a m
val foldM_ : ('a -> 'b -> 'a m) -> 'a -> 'b list -> unit m
val replicateM : int -> 'a m -> 'a list m
val replicateM_ : int -> 'a m -> unit m
val quand : bool -> unit m -> unit m
val unless : bool -> unit m -> unit m
val mzero : 'a m
val mplus : 'a m -> 'a m -> 'a m
val guard : bool -> unit m
val msum : 'a m list -> 'a m
end
module Monad_IO :
sig
type 'a m = 'a IO.m
val return : 'a -> 'a m
val fail : string -> 'a m
val ( >>= ) : 'a m -> ('a -> 'b m) -> 'b m
val ( >> ) : 'a m -> 'b m -> 'b m
val liftM : ('a -> 'b) -> 'a m -> 'b m
val liftM2 : ('a -> 'b -> 'c) -> 'a m -> 'b m -> 'c m
val liftM3 : ('a -> 'b -> 'c -> 'd) -> 'a m -> 'b m -> 'c m -> 'd m
val liftM4 :
('a -> 'b -> 'c -> 'd -> 'e) -> 'a m -> 'b m -> 'c m -> 'd m -> 'e m
val liftM5 :
('a -> 'b -> 'c -> 'd -> 'e -> 'f) ->
'a m -> 'b m -> 'c m -> 'd m -> 'e m -> 'f m
val ap : ('a -> 'b) m -> 'a m -> 'b m
val sequence : 'a m list -> 'a list m
val sequence_ : 'a m list -> unit m
val mapM : ('a -> 'b m) -> 'a list -> 'b list m
val mapM_ : ('a -> 'b m) -> 'a list -> unit m
val ( =<< ) : ('a -> 'b m) -> 'a m -> 'b m
val join : 'a m m -> 'a m
val filterM : ('a -> bool m) -> 'a list -> 'a list m
val mapAndUnzipM :
('a -> ('b * 'c) m) -> 'a list -> ('b list * 'c list) m
val zipWithM : ('a -> 'b -> 'c m) -> 'a list -> 'b list -> 'c list m
val zipWithM_ : ('a -> 'b -> 'c m) -> 'a list -> 'b list -> unit m
val foldM : ('a -> 'b -> 'a m) -> 'a -> 'b list -> 'a m
val foldM_ : ('a -> 'b -> 'a m) -> 'a -> 'b list -> unit m
val replicateM : int -> 'a m -> 'a list m
val replicateM_ : int -> 'a m -> unit m
val quand : bool -> unit m -> unit m
val unless : bool -> unit m -> unit m
end
module type Monad_state_type =
sig
type +'a m
val return : 'a -> 'a m
val fail : string -> 'a m
val ( >>= ) : 'a m -> ('a -> 'b m) -> 'b m
val ( >> ) : 'a m -> 'b m -> 'b m
val liftM : ('a -> 'b) -> 'a m -> 'b m
val liftM2 : ('a -> 'b -> 'c) -> 'a m -> 'b m -> 'c m
val liftM3 : ('a -> 'b -> 'c -> 'd) -> 'a m -> 'b m -> 'c m -> 'd m
val liftM4 :
('a -> 'b -> 'c -> 'd -> 'e) -> 'a m -> 'b m -> 'c m -> 'd m -> 'e m
val liftM5 :
('a -> 'b -> 'c -> 'd -> 'e -> 'f) ->
'a m -> 'b m -> 'c m -> 'd m -> 'e m -> 'f m
val ap : ('a -> 'b) m -> 'a m -> 'b m
val sequence : 'a m list -> 'a list m
val sequence_ : 'a m list -> unit m
val mapM : ('a -> 'b m) -> 'a list -> 'b list m
val mapM_ : ('a -> 'b m) -> 'a list -> unit m
val ( =<< ) : ('a -> 'b m) -> 'a m -> 'b m
val join : 'a m m -> 'a m
val filterM : ('a -> bool m) -> 'a list -> 'a list m
val mapAndUnzipM :
('a -> ('b * 'c) m) -> 'a list -> ('b list * 'c list) m
val zipWithM : ('a -> 'b -> 'c m) -> 'a list -> 'b list -> 'c list m
val zipWithM_ : ('a -> 'b -> 'c m) -> 'a list -> 'b list -> unit m
val foldM : ('a -> 'b -> 'a m) -> 'a -> 'b list -> 'a m
val foldM_ : ('a -> 'b -> 'a m) -> 'a -> 'b list -> unit m
val replicateM : int -> 'a m -> 'a list m
val replicateM_ : int -> 'a m -> unit m
val quand : bool -> unit m -> unit m
val unless : bool -> unit m -> unit m
type state
val get : Deriving_monad.Monad_state_type.state m
val put : Deriving_monad.Monad_state_type.state -> unit m
val runState :
'a m ->
Deriving_monad.Monad_state_type.state ->
'a * Deriving_monad.Monad_state_type.state
end
module Monad_state :
functor (S : sig type state end) ->
sig
type +'a m
val return : 'a -> 'a m
val fail : string -> 'a m
val ( >>= ) : 'a m -> ('a -> 'b m) -> 'b m
val ( >> ) : 'a m -> 'b m -> 'b m
val liftM : ('a -> 'b) -> 'a m -> 'b m
val liftM2 : ('a -> 'b -> 'c) -> 'a m -> 'b m -> 'c m
val liftM3 : ('a -> 'b -> 'c -> 'd) -> 'a m -> 'b m -> 'c m -> 'd m
val liftM4 :
('a -> 'b -> 'c -> 'd -> 'e) ->
'a m -> 'b m -> 'c m -> 'd m -> 'e m
val liftM5 :
('a -> 'b -> 'c -> 'd -> 'e -> 'f) ->
'a m -> 'b m -> 'c m -> 'd m -> 'e m -> 'f m
val ap : ('a -> 'b) m -> 'a m -> 'b m
val sequence : 'a m list -> 'a list m
val sequence_ : 'a m list -> unit m
val mapM : ('a -> 'b m) -> 'a list -> 'b list m
val mapM_ : ('a -> 'b m) -> 'a list -> unit m
val ( =<< ) : ('a -> 'b m) -> 'a m -> 'b m
val join : 'a m m -> 'a m
val filterM : ('a -> bool m) -> 'a list -> 'a list m
val mapAndUnzipM :
('a -> ('b * 'c) m) -> 'a list -> ('b list * 'c list) m
val zipWithM : ('a -> 'b -> 'c m) -> 'a list -> 'b list -> 'c list m
val zipWithM_ : ('a -> 'b -> 'c m) -> 'a list -> 'b list -> unit m
val foldM : ('a -> 'b -> 'a m) -> 'a -> 'b list -> 'a m
val foldM_ : ('a -> 'b -> 'a m) -> 'a -> 'b list -> unit m
val replicateM : int -> 'a m -> 'a list m
val replicateM_ : int -> 'a m -> unit m
val quand : bool -> unit m -> unit m
val unless : bool -> unit m -> unit m
type state = S.state
val get : state m
val put : state -> unit m
val runState : 'a m -> state -> 'a * state
end
end