packages feed

monadic-recursion-schemes 0.1.6.1 → 0.1.7.0

raw patch · 3 files changed

+17/−9 lines, 3 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Data.Functor.Foldable.Monadic: comutuM :: (Monad m, Traversable (Base t), Corecursive t) => (a -> m (Base t (Either a a))) -> (a -> m (Base t (Either a a))) -> a -> m t
+ Data.Functor.Foldable.Monadic: comutuM :: (Monad m, Traversable (Base t), Corecursive t) => (b -> m (Base t (Either a b))) -> (a -> m (Base t (Either a b))) -> b -> m t
- Data.Functor.Foldable.Monadic: mutuM :: (Monad m, Traversable (Base t), Recursive t) => (Base t (a, a) -> m a) -> (Base t (a, a) -> m a) -> t -> m a
+ Data.Functor.Foldable.Monadic: mutuM :: (Monad m, Traversable (Base t), Recursive t) => (Base t (a, b) -> m b) -> (Base t (a, b) -> m a) -> t -> m b

Files

CHANGELOG.md view
@@ -1,5 +1,9 @@ # Revision history for monadic-recursion-schemes +## 0.1.7.0 -- 2020-05-15++* refine mutuM and comutuM. These have correct type signature.+ ## 0.1.6.1 -- 2020-05-15  * bugfix: export preproM and postproM.
monadic-recursion-schemes.cabal view
@@ -4,7 +4,7 @@ -- http://haskell.org/cabal/users-guide/  name:                monadic-recursion-schemes-version:             0.1.6.1+version:             0.1.7.0 synopsis:            Recursion Schemes for Monadic version. description:         Yet another recursion schemes for monadic style, depends on recursion-schemes. homepage:            https://github.com/cutsea110/monadic-recursion-schemes.git
src/Data/Functor/Foldable/Monadic.hs view
@@ -213,10 +213,12 @@  -- | mutumorphism on mutual recursive mutuM :: (Monad m, Traversable (Base t), Recursive t)-      => (Base t (a, a) -> m a) -- ^ algebra-      -> (Base t (a, a) -> m a) -- ^ algebra-      -> t -> m a-mutuM f g = g <=< mapM (liftM2 (,) <$> mutuM g f <*> mutuM f g) . project+      => (Base t (a, b) -> m b) -- ^ algebra+      -> (Base t (a, b) -> m a) -- ^ algebra+      -> t -> m b+mutuM g f = v g f+  where u f g = f <=< mapM (liftM2 (,) <$> u f g <*> v g f) . project+        v g f = g <=< mapM (liftM2 (,) <$> u f g <*> v g f) . project  -- | mutumorphism on recursive variant over catamorphism mutuM' :: (Monad m, Traversable (Base t), Recursive t)@@ -227,10 +229,12 @@  -- | comutumorphism on comutual recursive comutuM :: (Monad m, Traversable (Base t), Corecursive t)-        => (a -> m (Base t (Either a a))) -- ^ coalgebra-        -> (a -> m (Base t (Either a a))) -- ^ coalgebra-        -> a -> m t-comutuM f g = fmap embed . mapM (either (comutuM g f) (comutuM f g)) <=< g+        => (b -> m (Base t (Either a b))) -- ^ coalgebra+        -> (a -> m (Base t (Either a b))) -- ^ coalgebra+        -> b -> m t+comutuM g f = v g f+  where u f g = fmap embed . mapM (either (u f g) (v g f)) <=< f+        v g f = fmap embed . mapM (either (u f g) (v g f)) <=< g  -- | comutumorphism on recursive variant over anamorphism comutuM' :: (Monad m, Traversable (Base t), Corecursive t)