packages feed

deferred-folds 0.6.1 → 0.6.2

raw patch · 3 files changed

+69/−7 lines, 3 filesdep ~basePVP ok

version bump matches the API change (PVP)

Dependency ranges changed: base

API changes (from Hackage documentation)

+ DeferredFolds.UnfoldM: tVarValue :: TVar a -> UnfoldM STM a

Files

deferred-folds.cabal view
@@ -1,7 +1,7 @@ name:   deferred-folds version:-  0.6.1+  0.6.2 category:   Folding synopsis:
library/DeferredFolds/Prelude.hs view
@@ -7,16 +7,68 @@  -- base --------------------------import Prelude as Exports hiding ((<>))-import Foreign as Exports hiding (void)+import Control.Applicative as Exports+import Control.Arrow as Exports+import Control.Category as Exports+import Control.Concurrent as Exports+import Control.Exception as Exports+import Control.Monad as Exports hiding (mapM_, sequence_, forM_, msum, mapM, sequence, forM)+import Control.Monad.IO.Class as Exports+import Control.Monad.Fix as Exports hiding (fix)+import Control.Monad.ST as Exports+import Data.Bits as Exports import Data.Bool as Exports-import Data.Monoid as Exports hiding ((<>), First(..), Last(..))-import Data.Semigroup as Exports+import Data.Char as Exports+import Data.Coerce as Exports+import Data.Complex as Exports+import Data.Data as Exports+import Data.Dynamic as Exports+import Data.Either as Exports+import Data.Fixed as Exports import Data.Foldable as Exports+import Data.Function as Exports hiding (id, (.))+import Data.Functor as Exports import Data.Functor.Identity as Exports+import Data.Int as Exports+import Data.IORef as Exports+import Data.Ix as Exports+import Data.List as Exports hiding (sortOn, isSubsequenceOf, uncons, concat, foldr, foldl1, maximum, minimum, product, sum, all, and, any, concatMap, elem, foldl, foldr1, notElem, or, find, maximumBy, minimumBy, mapAccumL, mapAccumR, foldl')+import Data.Maybe as Exports+import Data.Monoid as Exports hiding (Last(..), First(..))+import Data.Ord as Exports+import Data.Proxy as Exports+import Data.Ratio as Exports+import Data.STRef as Exports+import Data.String as Exports import Data.Traversable as Exports-import Control.Applicative as Exports-import Control.Monad as Exports+import Data.Tuple as Exports+import Data.Unique as Exports+import Data.Version as Exports+import Data.Word as Exports+import Debug.Trace as Exports+import Foreign.ForeignPtr as Exports+import Foreign.Ptr as Exports+import Foreign.StablePtr as Exports+import Foreign.Storable as Exports hiding (sizeOf, alignment)+import GHC.Conc as Exports hiding (withMVar, threadWaitWriteSTM, threadWaitWrite, threadWaitReadSTM, threadWaitRead)+import GHC.Exts as Exports (lazy, inline, sortWith, groupWith)+import GHC.Generics as Exports (Generic)+import GHC.IO.Exception as Exports+import Numeric as Exports+import Prelude as Exports hiding (concat, foldr, mapM_, sequence_, foldl1, maximum, minimum, product, sum, all, and, any, concatMap, elem, foldl, foldr1, notElem, or, mapM, sequence, id, (.))+import System.Environment as Exports+import System.Exit as Exports+import System.IO as Exports+import System.IO.Error as Exports+import System.IO.Unsafe as Exports+import System.Mem as Exports+import System.Mem.StableName as Exports+import System.Timeout as Exports+import Text.ParserCombinators.ReadP as Exports (ReadP, ReadS, readP_to_S, readS_to_P)+import Text.ParserCombinators.ReadPrec as Exports (ReadPrec, readPrec_to_P, readP_to_Prec, readPrec_to_S, readS_to_Prec)+import Text.Printf as Exports (printf, hPrintf)+import Text.Read as Exports (Read(..), readMaybe, readEither)+import Unsafe.Coerce as Exports  -- containers -------------------------
library/DeferredFolds/UnfoldM.hs view
@@ -27,6 +27,7 @@  instance Monad m => Monad (UnfoldM m) where   return = pure+  {-# INLINE (>>=) #-}   (>>=) (UnfoldM left) rightK =     UnfoldM $ \ step init ->     let@@ -91,11 +92,13 @@ foldable :: (Monad m, Foldable foldable) => foldable a -> UnfoldM m a foldable foldable = UnfoldM (\ step init -> A.foldlM step init foldable) +{-| Filter -} {-# INLINE filter #-} filter :: Monad m => (a -> m Bool) -> UnfoldM m a -> UnfoldM m a filter test (UnfoldM run) = UnfoldM (\ step -> run (\ state element -> test element >>= bool (return state) (step state element)))  {-| Ints in the specified inclusive range -}+{-# INLINE intsInRange #-} intsInRange :: Monad m => Int -> Int -> UnfoldM m Int intsInRange from to =   UnfoldM $ \ step init ->@@ -107,3 +110,10 @@           loop newState (succ int)         else return state     in loop init from++{-| TVar contents -}+{-# INLINE tVarValue #-}+tVarValue :: TVar a -> UnfoldM STM a+tVarValue var = UnfoldM $ \ step state -> do+  a <- readTVar var+  step state a