packages feed

potoki-core 1.2 → 1.3

raw patch · 3 files changed

+27/−14 lines, 3 filesdep ~base

Dependency ranges changed: base

Files

library/Potoki/Core/Consume.hs view
@@ -38,19 +38,31 @@ instance Functor (Consume input) where   fmap = rmap -instance Applicative (Consume input) where-  pure x =-    Consume (const (pure x))-  (<*>) (Consume leftConsumeIO) (Consume rightConsumeIO) =-    Consume $ \ fetch -> do-      (leftFetch, rightFetch) <- A.duplicate fetch-      rightOutputVar <- newEmptyMVar-      forkIO $ do-        !rightOutput <- rightConsumeIO rightFetch-        putMVar rightOutputVar rightOutput-      !leftOutput <- leftConsumeIO leftFetch-      rightOutput <- takeMVar rightOutputVar-      return (leftOutput rightOutput)+instance Applicative (Consume a) where+  pure x = Consume $ \_ -> pure x++  Consume leftConsumeIO <*> Consume rightConsumeIO =+    Consume $ \fetch -> leftConsumeIO fetch <*> rightConsumeIO fetch++instance Monad (Consume a) where+  Consume leftConsumeIO >>= toRightConsumeIO = Consume $ \fetch -> do+    Consume rightConsumeIO <- toRightConsumeIO <$> leftConsumeIO fetch+    rightConsumeIO fetch++instance MonadIO (Consume a) where+  liftIO a = Consume $ \_ -> a++apConcurrently :: Consume a (b -> c) -> Consume a b -> Consume a c+apConcurrently (Consume leftConsumeIO) (Consume rightConsumeIO) =+  Consume $ \ fetch -> do+    (leftFetch, rightFetch) <- A.duplicate fetch+    rightOutputVar <- newEmptyMVar+    forkIO $ do+      !rightOutput <- rightConsumeIO rightFetch+      putMVar rightOutputVar rightOutput+    !leftOutput <- leftConsumeIO leftFetch+    rightOutput <- takeMVar rightOutputVar+    return (leftOutput rightOutput)  {-# INLINABLE list #-} list :: Consume input [input]
library/Potoki/Core/Prelude.hs view
@@ -12,6 +12,7 @@ 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
potoki-core.cabal view
@@ -1,7 +1,7 @@ name:   potoki-core version:-  1.2+  1.3 synopsis:   Low-level components of "potoki" description: