UtilityTM 0.0.1 → 0.0.2
raw patch · 2 files changed
+38/−8 lines, 2 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
+ Control.Monad.TM: allM :: Monad m => (a -> m Bool) -> [a] -> m Bool
+ Control.Monad.TM: anyM :: Monad m => (a -> m Bool) -> [a] -> m Bool
- Control.Monad.TM: (.=<<.) :: (Monad q, Monad m, Traversable m) => m a -> (a -> q (m b)) -> q (m b)
+ Control.Monad.TM: (.=<<.) :: (Monad q, Monad m, Traversable m) => (a -> q (m b)) -> m a -> q (m b)
- Control.Monad.TM: (.>>=.) :: (Monad q, Monad m, Traversable m) => (a -> q (m b)) -> m a -> q (m b)
+ Control.Monad.TM: (.>>=.) :: (Monad q, Monad m, Traversable m) => m a -> (a -> q (m b)) -> q (m b)
Files
- UtilityTM.cabal +1/−1
- src/Control/Monad/TM.hs +37/−7
UtilityTM.cabal view
@@ -1,5 +1,5 @@ Name: UtilityTM-Version: 0.0.1+Version: 0.0.2 License: BSD3 License-File: LICENSE Author: Tony Morris <ʇǝu˙sıɹɹoɯʇ@ןןǝʞsɐɥ>
src/Control/Monad/TM.hs view
@@ -1,8 +1,10 @@ -- | Monadic combinators missing from the standard library module Control.Monad.TM (- (.>>=.)-, (.=<<.)+ (.=<<.)+, (.>>=.)+, anyM+, allM ) where import Data.Traversable@@ -10,19 +12,47 @@ import Prelude hiding (mapM) -- | Lifting bind into a monad. Often denoted /concatMapM/.-(.>>=.) ::+(.=<<.) :: (Monad q, Monad m, Traversable m) => (a -> q (m b)) -> m a -> q (m b)-(.>>=.) f =+(.=<<.) f = liftM join . mapM f -- | Lifting bind into a monad. Often denoted /concatMapM/.-(.=<<.) ::+(.>>=.) :: (Monad q, Monad m, Traversable m) => m a -> (a -> q (m b)) -> q (m b)-(.=<<.) =- flip (.>>=.)+(.>>=.) =+ flip (.=<<.)++-- | Existential quantification.+anyM ::+ Monad m =>+ (a -> m Bool)+ -> [a]+ -> m Bool+anyM _ [] =+ return False+anyM f (a:as) =+ do z <- f a+ if z+ then return True+ else anyM f as++-- | Universal quantification.+allM ::+ Monad m =>+ (a -> m Bool)+ -> [a]+ -> m Bool+allM _ [] =+ return True+allM f (a:as) =+ do z <- f a+ if z+ then allM f as+ else return False