# Functor BatEnum.WithMonad

    module WithMonad: functor (Mon : BatInterfaces.Monad) -> sig .. end

Monadic operations on Enumerations containing monadic elements

This module will let you use sequence and fold_monad functions over enumerations.

Parameters:

`Mon` | : | `BatInterfaces.Monad`

    type 'a m = 'a Mon.m

Type of the monadic elements.

    val sequence : 'a m BatEnum.t -> 'a BatEnum.t m

`sequence e` evaluates each monadic elements (of type `'a m`) contained in the enumeration `e` to get a monadic enumeration of `'a` elements, of type `'a BatEnum.t m`.

    val fold_monad : ('a -> 'b -> 'a m) ->
           'a -> 'b BatEnum.t -> 'a m

`fold_monad f init e` does a folding of the enumeration `e` applying step by step the function `f` that gives back results in the `Mon` monad, with the `init` initial element. The result is a value in the `Mon` monad.