packages feed

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 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-[![Build Status](https://travis-ci.org/EduardSergeev/monad-memo.svg?branch=master)](https://travis-ci.org/EduardSergeev/monad-memo)+[![Travis Build Status](https://travis-ci.org/EduardSergeev/monad-memo.svg?branch=master)](https://travis-ci.org/EduardSergeev/monad-memo)+[![Github Build Status](../../workflows/CI/badge.svg)](../../actions?query=workflow%3ACI+branch%3Amaster)+[![Test Coverage](https://coveralls.io/repos/github/EduardSergeev/monad-memo/badge.svg?branch=master)](https://coveralls.io/github/EduardSergeev/monad-memo?branch=master)+[![Hackage](https://img.shields.io/hackage/v/monad-memo.svg)](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