{-# LANGUAGE RankNTypes #-} {-# LANGUAGE DeriveFunctor #-} -- | If this is your first time with conduit, you should probably start with -- the tutorial: -- . module Data.Conduit ( -- * Core interface -- ** Types Source , Conduit , Sink , ConduitM -- ** Connect/fuse operators , ($$) , ($=) , (=$) , (=$=) -- *** Fuse with upstream results , fuseBoth , fuseUpstream -- ** Primitives , await , yield , leftover , runConduit -- ** Finalization , bracketP , addCleanup , yieldOr -- ** Exception handling , catchC , handleC , tryC -- * Generalized conduit types , Producer , Consumer , toProducer , toConsumer -- * Utility functions , awaitForever , transPipe , mapOutput , mapOutputMaybe , mapInput , passthroughSink -- * Connect-and-resume , ResumableSource , newResumableSource , ($$+) , ($$++) , ($$+-) , ($=+) , unwrapResumable , closeResumableSource -- ** For @Conduit@s , ResumableConduit , newResumableConduit , (=$$+) , (=$$++) , (=$$+-) , unwrapResumableConduit -- * Fusion with leftovers , fuseLeftovers , fuseReturnLeftovers -- * Flushing , Flush (..) -- * Newtype wrappers -- ** ZipSource , ZipSource (..) , sequenceSources -- ** ZipSink , ZipSink (..) , sequenceSinks -- ** ZipConduit , ZipConduit (..) , sequenceConduits ) where import Data.Conduit.Internal.Conduit