monad-memo-0.5.4: Memoization monad transformer

# monad-memo-0.5.4: Memoization monad transformer

Memoization monad transformer supporting most of the standard monad transformers and a range of memoization cache types: from default pure maps to extremely fast mutable vectors

To add memoization behaviour to a monadic function:

1) Add `memo` combinator at the point when memoization is required (i.e. recursive call)

    import Control.Monad.Memo

    fibm 0 = return 0
    fibm 1 = return 1
    fibm n = do
      n1 <- memo fibm (n-1)
      n2 <- memo fibm (n-2)
      return (n1+n2)

2) Use appropriate *eval* or *run* function to evaluate resulting `MonadMemo` monad:

    startEvalMemo (fibm 100)

See detailed description and examples: Control.Monad.Memo

Modules

monad-memo-0.5.4

- Control
  Submodules
  - Monad
    Submodules
    - Control.Monad.Memo
      Submodules
      - Control.Monad.Memo.Array
        Submodules
        - Control.Monad.Memo.Array.Instances
      - Control.Monad.Memo.Class
      - Control.Monad.Memo.Vector
        Submodules
        - Control.Monad.Memo.Vector.Expandable
        - Control.Monad.Memo.Vector.Instances
        - Control.Monad.Memo.Vector.Unsafe
    - Trans
      Submodules
      - Memo
        Submodules
        - Control.Monad.Trans.Memo.Map
        - Control.Monad.Trans.Memo.ReaderCache
        - Control.Monad.Trans.Memo.State
        - Control.Monad.Trans.Memo.StateCache
- Data
  Submodules
  - Data.MapLike
    Submodules
    - Data.MapLike.Instances
  - Data.MaybeLike
    Submodules
    - Data.MaybeLike.Instances