hw-prim 0.6.2.29 → 0.6.2.30
raw patch · 2 files changed
+24/−1 lines, 2 filesdep +unliftio-corePVP: minor bump suggested
API additions: PVP suggests at least a minor version bump
Dependencies added: unliftio-core
API changes (from Hackage documentation)
+ HaskellWorks.Control.Monad.Lazy: interleaveSequenceIO :: [IO a] -> IO [a]
+ HaskellWorks.Control.Monad.Lazy: interleaveSequenceM :: MonadUnliftIO m => [m a] -> m [a]
Files
- hw-prim.cabal +4/−1
- src/HaskellWorks/Control/Monad/Lazy.hs +20/−0
hw-prim.cabal view
@@ -1,7 +1,7 @@ cabal-version: 2.2 name: hw-prim-version: 0.6.2.29+version: 0.6.2.30 synopsis: Primitive functions and data types description: Primitive functions and data types. category: Data@@ -42,6 +42,7 @@ common semigroups { build-depends: semigroups >= 0.8.4 && < 0.20 } common transformers { build-depends: transformers >= 0.4 && < 0.6 } common vector { build-depends: vector >= 0.12 && < 0.13 }+common unliftio-core { build-depends: unliftio-core >= 0.1.2.0 && < 0.2 } common common default-language: Haskell2010@@ -57,8 +58,10 @@ , mmap , semigroups , transformers+ , unliftio-core , vector exposed-modules:+ HaskellWorks.Control.Monad.Lazy HaskellWorks.Data.AtIndex HaskellWorks.Data.Branchless HaskellWorks.Data.ByteString
+ src/HaskellWorks/Control/Monad/Lazy.hs view
@@ -0,0 +1,20 @@+module HaskellWorks.Control.Monad.Lazy+ ( interleaveSequenceIO+ , interleaveSequenceM+ ) where++import Control.Monad.IO.Unlift++import qualified System.IO.Unsafe as IO++interleaveSequenceIO :: [IO a] -> IO [a]+interleaveSequenceIO [] = return []+interleaveSequenceIO (fa:fas) = do+ a <- fa+ as <- IO.unsafeInterleaveIO (interleaveSequenceIO fas)+ return (a:as)++interleaveSequenceM :: MonadUnliftIO m => [m a] -> m [a]+interleaveSequenceM as = do+ f <- askUnliftIO+ liftIO $ interleaveSequenceIO (fmap (unliftIO f) as)