on master help sign in
tutorial: Update conduit interop example

* It is now possible to uncons a conduit.

commitdfc13d8316fb2810e29dbd28caf78fe4888087b5 authorKirill Elagin <kirelagin@gmail.com> dateThu 15 Oct 2020, 15:24 (6 years ago) parentc846b4e
1 file changed+7−6
src/Streamly/Tutorial.hs+7−6
src/Streamly/Tutorial.hs+7−6
@@ -1620,21 +1620,22 @@ import Control.Monad.Trans.Class (MonadTrans (lift))
16201620-- Interop with @conduit@:
16211621--
16221622-- @
1623−-- import "Streamly.Prelude" (SerialT)
1623+-- import "Streamly.Prelude" (IsStream, MonadAsync, SerialT)
16241624-- import qualified "Streamly.Prelude" as S
16251625-- import qualified Data.Conduit as C
16261626-- import qualified Data.Conduit.List as C
1627−-- import qualified Data.Conduit.Combinators as C
16281627--
1629−-- -- It seems there is no way out of a conduit as it does not provide an
1630−-- -- uncons or a tail function. We can convert streamly to conduit though.
1628+-- -- | conduit to streamly
1629+-- fromConduit :: (IsStream t, MonadAsync m) => C.ConduitT () a m () -> t m a
1630+-- fromConduit = S.unfoldrM C.unconsM . C.sealConduitT
16311631--
16321632-- -- | streamly to conduit
16331633-- toConduit :: Monad m => SerialT m a -> C.ConduitT i a m ()
1634−-- toConduit s = C.unfoldM S.'uncons' s
1634+-- toConduit = C.unfoldM S.'uncons'
16351635--
16361636-- main = do
1637−-- C.runConduit (toConduit (S.'fromFoldable' [1..3]) C..| C.sinkList) >>= print
1637+-- S.'toList' (fromConduit (C.sourceList [1..3])) >>= print
1638+-- C.runConduit (toConduit (S.'fromFoldable' [1..3]) C..| C.consume) >>= print
16381639-- @
16391640
16401641-- $comparison