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)