{- | Module : Tubes Description : All-encompassing module. Copyright : (c) 2014, 2015 Gatlin Johnson License : GPL-3 Maintainer : gatlin@niltag.net Stability : experimental This exists primarily for my own education. It is updated often as I try things and is probably, at this moment, wrong. If you want to know more about iteratees: http://okmij.org/ftp/Streams.html My goals were to (1) learn more about iteratees and (2) see how far I could get using free monads. -} module Tubes ( TubeF(..) , Tube(..) , Source(..) , Sink(..) , Action(..) -- * Re-exports , lift -- re-exported from Control.Monad.Trans.Free , runFreeT -- re-exported from Control.Monad.Trans.Free -- * Core infrastructure , await , yield , awaitF , yieldF , each , Tubes.Core.for , (~>) , (>-) , (><) , run , liftT -- * Utilities , cat , Tubes.Util.map , Tubes.Util.drop , Tubes.Util.take , Tubes.Util.takeWhile , Tubes.Util.filter , Tubes.Util.reduce , Tubes.Util.every , Tubes.Util.unyield , Tubes.Util.prompt , Tubes.Util.display ) where import Prelude hiding (map, fold, print, filter) import Control.Monad.Trans.Class import Control.Monad.Trans.Free import Tubes.Core import Tubes.Util import Control.Monad