streamly-examples-0.1.0: examples/Interop/Conduit.hs
{-# LANGUAGE FlexibleContexts #-}
import Streamly.Prelude (IsStream, MonadAsync, SerialT)
import qualified Streamly.Prelude as Stream
import qualified Data.Conduit as Conduit
import qualified Data.Conduit.List as Conduit
-- | conduit to streamly
fromConduit :: (IsStream t, MonadAsync m) => Conduit.ConduitT () a m () -> t m a
fromConduit = Stream.unfoldrM Conduit.unconsM . Conduit.sealConduitT
-- | streamly to conduit
toConduit :: Monad m => SerialT m a -> Conduit.ConduitT i a m ()
toConduit = Conduit.unfoldM Stream.uncons
main :: IO ()
main = do
Stream.toList (fromConduit (Conduit.sourceList ([1..3]::[Int]))) >>= print
Conduit.runConduit (toConduit (Stream.fromFoldable ([1..3]::[Int])) Conduit..| Conduit.consume) >>= print