monad-memo 0.5.1 → 0.5.2
raw patch · 4 files changed
+102/−119 lines, 4 filesdep +monad-memoPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependencies added: monad-memo
API changes (from Hackage documentation)
- Control.Monad.Memo.Array.Instances: instance Data.MaybeLike.MaybeLike (GHC.Base.Maybe v) v => Control.Monad.Memo.Array.ArrayMemo v (GHC.Base.Maybe v)
- Control.Monad.Memo.Class: instance Control.Monad.Memo.Class.MonadCache k (GHC.Base.Maybe v) m => Control.Monad.Memo.Class.MonadMemo k v (Control.Monad.Trans.Maybe.MaybeT m)
- Control.Monad.Memo.Vector: instance (Control.Monad.Primitive.PrimMonad m, Control.Monad.Primitive.PrimState m ~ s, Data.MaybeLike.MaybeLike e v, Data.Vector.Generic.Mutable.Base.MVector c e) => Control.Monad.Memo.Class.MonadCache GHC.Types.Int v (Control.Monad.Memo.Vector.Cache c s e m)
- Control.Monad.Memo.Vector: instance (Control.Monad.Primitive.PrimMonad m, Control.Monad.Primitive.PrimState m ~ s, Data.MaybeLike.MaybeLike e v, Data.Vector.Generic.Mutable.Base.MVector c e) => Control.Monad.Memo.Class.MonadMemo GHC.Types.Int v (Control.Monad.Memo.Vector.Cache c s e m)
- Control.Monad.Memo.Vector.Expandable: instance (Control.Monad.Primitive.PrimMonad m, Control.Monad.Primitive.PrimState m ~ s, Data.MaybeLike.MaybeLike e v, Data.Vector.Generic.Mutable.Base.MVector c e) => Control.Monad.Memo.Class.MonadCache GHC.Types.Int v (Control.Monad.Memo.Vector.Expandable.Cache c s e m)
- Control.Monad.Memo.Vector.Expandable: instance (Control.Monad.Primitive.PrimMonad m, Control.Monad.Primitive.PrimState m ~ s, Data.MaybeLike.MaybeLike e v, Data.Vector.Generic.Mutable.Base.MVector c e) => Control.Monad.Memo.Class.MonadMemo GHC.Types.Int v (Control.Monad.Memo.Vector.Expandable.Cache c s e m)
- Control.Monad.Memo.Vector.Instances: instance Data.MaybeLike.MaybeLike (GHC.Base.Maybe v) v => Control.Monad.Memo.Vector.Expandable.VectorMemo v (GHC.Base.Maybe v)
- Control.Monad.Memo.Vector.Instances: instance Data.MaybeLike.MaybeLike (GHC.Base.Maybe v) v => Control.Monad.Memo.Vector.Unsafe.VectorMemo v (GHC.Base.Maybe v)
- Control.Monad.Memo.Vector.Instances: instance Data.MaybeLike.MaybeLike (GHC.Base.Maybe v) v => Control.Monad.Memo.Vector.VectorMemo v (GHC.Base.Maybe v)
- Control.Monad.Memo.Vector.Unsafe: instance (Control.Monad.Primitive.PrimMonad m, Control.Monad.Primitive.PrimState m ~ s, Data.MaybeLike.MaybeLike e v, Data.Vector.Generic.Mutable.Base.MVector c e) => Control.Monad.Memo.Class.MonadCache GHC.Types.Int v (Control.Monad.Memo.Vector.Unsafe.Cache c s e m)
- Control.Monad.Memo.Vector.Unsafe: instance (Control.Monad.Primitive.PrimMonad m, Control.Monad.Primitive.PrimState m ~ s, Data.MaybeLike.MaybeLike e v, Data.Vector.Generic.Mutable.Base.MVector c e) => Control.Monad.Memo.Class.MonadMemo GHC.Types.Int v (Control.Monad.Memo.Vector.Unsafe.Cache c s e m)
- Data.MaybeLike.Instances: instance Data.MaybeLike.MaybeLike (GHC.Base.Maybe a) a
+ Control.Monad.Memo.Array: type family UArray (m :: * -> *) :: * -> * -> *
+ Control.Monad.Memo.Array.Instances: instance Data.MaybeLike.MaybeLike (GHC.Maybe.Maybe v) v => Control.Monad.Memo.Array.ArrayMemo v (GHC.Maybe.Maybe v)
+ Control.Monad.Memo.Class: instance Control.Monad.Memo.Class.MonadCache k (GHC.Maybe.Maybe v) m => Control.Monad.Memo.Class.MonadMemo k v (Control.Monad.Trans.Maybe.MaybeT m)
+ Control.Monad.Memo.Vector: instance (Control.Monad.Primitive.PrimMonad m, Control.Monad.Primitive.PrimState m Data.Type.Equality.~ s, Data.MaybeLike.MaybeLike e v, Data.Vector.Generic.Mutable.Base.MVector c e) => Control.Monad.Memo.Class.MonadCache GHC.Types.Int v (Control.Monad.Memo.Vector.Cache c s e m)
+ Control.Monad.Memo.Vector: instance (Control.Monad.Primitive.PrimMonad m, Control.Monad.Primitive.PrimState m Data.Type.Equality.~ s, Data.MaybeLike.MaybeLike e v, Data.Vector.Generic.Mutable.Base.MVector c e) => Control.Monad.Memo.Class.MonadMemo GHC.Types.Int v (Control.Monad.Memo.Vector.Cache c s e m)
+ Control.Monad.Memo.Vector.Expandable: instance (Control.Monad.Primitive.PrimMonad m, Control.Monad.Primitive.PrimState m Data.Type.Equality.~ s, Data.MaybeLike.MaybeLike e v, Data.Vector.Generic.Mutable.Base.MVector c e) => Control.Monad.Memo.Class.MonadCache GHC.Types.Int v (Control.Monad.Memo.Vector.Expandable.Cache c s e m)
+ Control.Monad.Memo.Vector.Expandable: instance (Control.Monad.Primitive.PrimMonad m, Control.Monad.Primitive.PrimState m Data.Type.Equality.~ s, Data.MaybeLike.MaybeLike e v, Data.Vector.Generic.Mutable.Base.MVector c e) => Control.Monad.Memo.Class.MonadMemo GHC.Types.Int v (Control.Monad.Memo.Vector.Expandable.Cache c s e m)
+ Control.Monad.Memo.Vector.Instances: instance Data.MaybeLike.MaybeLike (GHC.Maybe.Maybe v) v => Control.Monad.Memo.Vector.Expandable.VectorMemo v (GHC.Maybe.Maybe v)
+ Control.Monad.Memo.Vector.Instances: instance Data.MaybeLike.MaybeLike (GHC.Maybe.Maybe v) v => Control.Monad.Memo.Vector.Unsafe.VectorMemo v (GHC.Maybe.Maybe v)
+ Control.Monad.Memo.Vector.Instances: instance Data.MaybeLike.MaybeLike (GHC.Maybe.Maybe v) v => Control.Monad.Memo.Vector.VectorMemo v (GHC.Maybe.Maybe v)
+ Control.Monad.Memo.Vector.Unsafe: instance (Control.Monad.Primitive.PrimMonad m, Control.Monad.Primitive.PrimState m Data.Type.Equality.~ s, Data.MaybeLike.MaybeLike e v, Data.Vector.Generic.Mutable.Base.MVector c e) => Control.Monad.Memo.Class.MonadCache GHC.Types.Int v (Control.Monad.Memo.Vector.Unsafe.Cache c s e m)
+ Control.Monad.Memo.Vector.Unsafe: instance (Control.Monad.Primitive.PrimMonad m, Control.Monad.Primitive.PrimState m Data.Type.Equality.~ s, Data.MaybeLike.MaybeLike e v, Data.Vector.Generic.Mutable.Base.MVector c e) => Control.Monad.Memo.Class.MonadMemo GHC.Types.Int v (Control.Monad.Memo.Vector.Unsafe.Cache c s e m)
+ Data.MaybeLike.Instances: instance Data.MaybeLike.MaybeLike (GHC.Maybe.Maybe a) a
Files
- CHANGELOG.md +44/−0
- CHANGES +0/−28
- README.md +4/−1
- monad-memo.cabal +54/−90
+ CHANGELOG.md view
@@ -0,0 +1,44 @@+# Change Log+All notable changes to the `monad-memo` project will be documented in this file++## [0.5.2] - 2020-09-20+### Added+- CI on Github actions with test coverage and Hackage upload+### Fixed+- `monad-memo.cabal` structure: redundancy and to enable test coverage calculation+- `CHANGELOG.md` structure++## [0.5.1] - 2018-08-31+### Added+- Support multiple mutable caches in transformers stack+ This allows Array/Vector-based caches to be used for mutually recursive function memoization++## [0.5.0] - 2018-08-06+### Fixed+- Refresh project to be compilable with latest GHC and libraries+- Remove dependency on `mtl` package (`transformers` is sufficient)+- Use `Except` instead of deprecated `Error`+- Remove support for `ListT` transformer since it is now deprecated+- Use standard `StateT` & `ReaderT` for `MonadCache` implementations++## [0.4.1] - 2013-03-06+### Fixed+- Documentation+- `Example` is renamed to `example` and is excluded from package's module hierarchy++## [0.4.0] - 2013-02-26+### Added+- `ArrayCache`: mutable array-based `MonadCache` for top performance+- `VectorCache` (and flavours) `vector`-based `MonadCache` for even better performance+- Simple benchmark included+### Fixed+- Bug fixes in transformer implementations (`Reader`, `State`, `RWS`)++## [0.3.0] - 2011-04-03+### Added+- Added generalized `MemoStateT` transformer (to host any `Data.MapLike` cache-container)+- `MemoT` is now `MemoStateT` instantiated with `Data.Map`++## [0.2.0] - 2011-03-27+### Added+- A set of `forX` functions (`for2`, `for3` and `for4`) to adapt curried function into uncurried `MemoCache`
− CHANGES
@@ -1,28 +0,0 @@---0.2.0-- Added a set of forX functions (for2, for3 and for4) to adapt curried function into uncuried MemoCache--0.3.0-- Added generalized MemoStateT transformer (to host any Data.MapLike cache-container)-- MemoT is now MemoStateT instantiated with Data.Map--0.4.0-- ArrayCache: mutable array-based MonadCache for top performance-- VectorCache (and flavours) vector-based MonadCache for even better performance-- Bug fixes in transformer implementations (Reader, State, RWS)-- Simple benchmark included-0.4.1-- Documentation fixes-- `Example` is renamed to `example` and is excluded from package's module hierarchy--0.5.0-- Refresh project to be compilable with latest GHC and libraries-- Remove dependency on `mtl` package (`transformers` is sufficient)-- Use `Except` instead of depricated `Error`-- Remove support for `ListT` transformer since it is now depricated-- Use standard `StateT` & `ReaderT` for `MonadCache` implementations--0.5.1-- Support multiple mutable caches in transformers stack- This allows Array/Vector-based caches to be used for mutually recursive function memoization
README.md view
@@ -1,5 +1,8 @@ # monad-memo-[](https://travis-ci.org/EduardSergeev/monad-memo)+[](https://travis-ci.org/EduardSergeev/monad-memo)+[](../../actions?query=workflow%3ACI+branch%3Amaster)+[](https://coveralls.io/github/EduardSergeev/monad-memo?branch=master)+[](http://hackage.haskell.org/package/monad-memo) ## Purpose This package provides a convenient mechanism for adding memoization to Haskell monadic functions.
monad-memo.cabal view
@@ -1,6 +1,6 @@ Name: monad-memo -Version: 0.5.1+Version: 0.5.2 -- A short (one-line) description of the package. Synopsis: Memoization monad transformer@@ -22,7 +22,7 @@ > n2 <- memo fibm (n-2) > return (n1+n2) .- 2) Use approprite /*eval*/ or /*run*/ function to evaluate resulting `MonadMemo` monad:+ 2) Use appropriate /*eval*/ or /*run*/ function to evaluate resulting `MonadMemo` monad: . >startEvalMemo (fibm 100) .@@ -57,122 +57,86 @@ GHC==7.10.3, GHC==8.2.2, GHC==8.4.3+ GHC==8.6.5+ GHC==8.8.4 Extra-source-files:- CHANGES,+ CHANGELOG.md, README.md, example/*.hs, example/Customisation/*.hs --source-repository head+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.5.0-- Library default-language: Haskell2010 build-depends:- base >= 3.0 && <= 5.0,- transformers >= 0.2,- containers >= 0.3,- array >= 0.3,- vector >= 0.7,- primitive >= 0.3+ base >= 3.0 && <= 5.0,+ transformers >= 0.2,+ containers >= 0.3,+ array >= 0.3,+ vector >= 0.7,+ primitive >= 0.3 if impl(ghc < 7.10) build-depends:- transformers-compat >= 0.3+ transformers-compat >= 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+ 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+Test-suite tests default-language: Haskell2010 type: exitcode-stdio-1.0- hs-source-dirs: . test+ hs-source-dirs: test main-is: Main.hs build-depends: - base >= 3.0 && <= 5.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+ monad-memo,+ base >= 3.0 && <= 5.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 if impl(ghc < 7.10) build-depends:- transformers-compat >= 0.3+ transformers-compat >= 0.3 other-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- MemoTest + MemoTest Benchmark all default-language: Haskell2010 type: exitcode-stdio-1.0- hs-source-dirs: . benchmark+ hs-source-dirs: benchmark main-is: Main.hs build-depends:- base >= 3.0 && <= 5.0,- transformers >= 0.2,- containers >= 0.3,- array >= 0.3,- vector >= 0.7,- primitive >= 0.3,- criterion >= 0.6+ monad-memo,+ base >= 3.0 && <= 5.0,+ transformers >= 0.2,+ containers >= 0.3,+ array >= 0.3,+ vector >= 0.7,+ primitive >= 0.3,+ criterion >= 0.6 if impl(ghc < 7.10) build-depends:- transformers-compat >= 0.3- other-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 + transformers-compat >= 0.3