packages feed

monad-memo-0.4.1: monad-memo.cabal

Name:               monad-memo

Version:            0.4.1

-- A short (one-line) description of the package.
Synopsis:           Memoization monad transformer

-- A longer description of the package.
Description:
     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 'Control.Monad.Memo.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 approprite /*eval*/ or /*run*/ function to evaluate resulting `MonadMemo` monad:
        .
        >startEvalMemo (fibm 100)
        .
     See detailed description and examples: "Control.Monad.Memo"

-- URL for the project homepage or repository.
Homepage:           https://github.com/EduardSergeev/monad-memo

-- The license under which the package is released.
License:            BSD3

-- The file containing the license text.
License-file:       LICENSE

-- The package author(s).
Author:             Eduard Sergeev

-- An email address to which users can send suggestions, bug reports,
-- and patches.
Maintainer:         eduard.sergeev@gmail.com

Category:           Control, Monad

Build-type:         Simple


-- Constraint on the version of Cabal needed to build this package.
Cabal-version:      >=1.8

Tested-with:        GHC==7.0.4, GHC==7.4.2, GHC==7.6.2

Extra-source-files:
	  CHANGES

source-repository head
  type:             git
  location:	    https://github.com/EduardSergeev/monad-memo.git

source-repository this
  type:             git
  location:         https://github.com/EduardSergeev/monad-memo.git
  tag:              0.4.1


Library
  build-depends:
          base >= 3.0 && <= 5.0,
          mtl >= 2.0,
          transformers >= 0.2,
          containers >= 0.3,
          array >= 0.3,
          vector >= 0.7,
          primitive >= 0.3
  
  exposed-modules:
          Control.Monad.Memo,
          Control.Monad.Memo.Class,
          Control.Monad.Trans.Memo.ReaderCache,
          Control.Monad.Trans.Memo.StateCache,
          Control.Monad.Trans.Memo.State,
          Control.Monad.Trans.Memo.Map,
          Control.Monad.Memo.Array,
          Control.Monad.Memo.Array.Instances,
          Control.Monad.Memo.Vector,
          Control.Monad.Memo.Vector.Expandable,
          Control.Monad.Memo.Vector.Unsafe,
          Control.Monad.Memo.Vector.Instances,
          Data.MapLike,
          Data.MapLike.Instances,
          Data.MaybeLike,
          Data.MaybeLike.Instances

Test-Suite tests
  type:             exitcode-stdio-1.0
  hs-source-dirs:   . test
  main-is:          Main.hs
  build-depends: 
          base >= 3.0 && <= 5.0,
          mtl >= 2.0,
          transformers >= 0.2,
          containers >= 0.3,
          array >= 0.3,
          vector >= 0.7,
          primitive >= 0.3,
          random >= 1.0,
          QuickCheck >= 2.0,
          test-framework-quickcheck2 >= 0.2.9,
          test-framework >= 0.3.3


Benchmark all
  type:             exitcode-stdio-1.0
  hs-source-dirs:   . benchmark
  main-is:          Main.hs
  build-depends:
          base >= 3.0 && <= 5.0,
          mtl >= 2.0,
          transformers >= 0.2,
          containers >= 0.3,
          array >= 0.3,
          vector >= 0.7,
          primitive >= 0.3,
          criterion >= 0.6
  ghc-options:      -O2