-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Typeclasses for dealing with various chunked data representations
--   
--   Originally present in classy-prelude.
@package chunked-data
@version 0.3.0


-- | Various zipping and unzipping functions for chunked data structures.
module Data.ChunkedZip
class Functor f => Zip f where zip = zipWith (,) zap = zipWith id unzip = fmap fst &&& fmap snd
zipWith :: Zip f => (a -> b -> c) -> f a -> f b -> f c
zip :: Zip f => f a -> f b -> f (a, b)
zap :: Zip f => f (a -> b) -> f a -> f b
unzip :: Zip f => f (a, b) -> (f a, f b)
class Functor f => Zip3 f where zip3 = zipWith3 (\ x y z -> (x, y, z)) zap3 = zipWith3 id
zipWith3 :: Zip3 f => (a -> b -> c -> d) -> f a -> f b -> f c -> f d
zip3 :: Zip3 f => f a -> f b -> f c -> f (a, b, c)
zap3 :: Zip3 f => f (a -> b -> c) -> f a -> f b -> f c
unzip3 :: Zip3 f => f (a, b, c) -> (f a, f b, f c)
class Functor f => Zip4 f where zip4 = zipWith4 (\ w x y z -> (w, x, y, z)) zap4 = zipWith4 id
zipWith4 :: Zip4 f => (a -> b -> c -> d -> e) -> f a -> f b -> f c -> f d -> f e
zip4 :: Zip4 f => f a -> f b -> f c -> f d -> f (a, b, c, d)
zap4 :: Zip4 f => f (a -> b -> c -> d) -> f a -> f b -> f c -> f d
unzip4 :: Zip4 f => f (a, b, c, d) -> (f a, f b, f c, f d)
class Functor f => Zip5 f where zip5 = zipWith5 (\ v w x y z -> (v, w, x, y, z)) zap5 = zipWith5 id
zipWith5 :: Zip5 f => (a -> b -> c -> d -> e -> g) -> f a -> f b -> f c -> f d -> f e -> f g
zip5 :: Zip5 f => f a -> f b -> f c -> f d -> f e -> f (a, b, c, d, e)
zap5 :: Zip5 f => f (a -> b -> c -> d -> e) -> f a -> f b -> f c -> f d -> f e
unzip5 :: Zip5 f => f (a, b, c, d, e) -> (f a, f b, f c, f d, f e)
class Functor f => Zip6 f where zip6 = zipWith6 (\ u v w x y z -> (u, v, w, x, y, z)) zap6 = zipWith6 id
zipWith6 :: Zip6 f => (a -> b -> c -> d -> e -> g -> h) -> f a -> f b -> f c -> f d -> f e -> f g -> f h
zip6 :: Zip6 f => f a -> f b -> f c -> f d -> f e -> f g -> f (a, b, c, d, e, g)
zap6 :: Zip6 f => f (a -> b -> c -> d -> e -> g) -> f a -> f b -> f c -> f d -> f e -> f g
unzip6 :: Zip6 f => f (a, b, c, d, e, g) -> (f a, f b, f c, f d, f e, f g)
class Functor f => Zip7 f where zip7 = zipWith7 (\ t u v w x y z -> (t, u, v, w, x, y, z)) zap7 = zipWith7 id
zipWith7 :: Zip7 f => (a -> b -> c -> d -> e -> g -> h -> i) -> f a -> f b -> f c -> f d -> f e -> f g -> f h -> f i
zip7 :: Zip7 f => f a -> f b -> f c -> f d -> f e -> f g -> f h -> f (a, b, c, d, e, g, h)
zap7 :: Zip7 f => f (a -> b -> c -> d -> e -> g -> h) -> f a -> f b -> f c -> f d -> f e -> f g -> f h
unzip7 :: Zip7 f => f (a, b, c, d, e, g, h) -> (f a, f b, f c, f d, f e, f g, f h)
instance Data.ChunkedZip.Zip []
instance Data.ChunkedZip.Zip Data.List.NonEmpty.NonEmpty
instance Data.ChunkedZip.Zip Data.Sequence.Seq
instance Data.ChunkedZip.Zip Data.Tree.Tree
instance Data.ChunkedZip.Zip Data.Vector.Vector
instance Data.ChunkedZip.Zip m => Data.ChunkedZip.Zip (Control.Monad.Trans.Identity.IdentityT m)
instance Data.ChunkedZip.Zip ((->) a)
instance Data.ChunkedZip.Zip m => Data.ChunkedZip.Zip (Control.Monad.Trans.Reader.ReaderT e m)
instance Data.ChunkedZip.Zip Data.IntMap.Base.IntMap
instance (Data.ChunkedZip.Zip f, Data.ChunkedZip.Zip g) => Data.ChunkedZip.Zip (Data.Functor.Compose.Compose f g)
instance Data.ChunkedZip.Zip3 []
instance Data.ChunkedZip.Zip3 Data.Vector.Vector
instance Data.ChunkedZip.Zip3 Data.Sequence.Seq
instance Data.ChunkedZip.Zip4 []
instance Data.ChunkedZip.Zip4 Data.Vector.Vector
instance Data.ChunkedZip.Zip4 Data.Sequence.Seq
instance Data.ChunkedZip.Zip5 []
instance Data.ChunkedZip.Zip5 Data.Vector.Vector
instance Data.ChunkedZip.Zip6 []
instance Data.ChunkedZip.Zip6 Data.Vector.Vector
instance Data.ChunkedZip.Zip7 []


-- | Abstraction for different kinds of builders.
--   
--   Note that whenever a character encoding is used, it will be UTF8. For
--   different behavior, please use the underlying library.
module Data.Builder

-- | Since 0.1.0.0
type TextBuilder = Builder

-- | Since 0.1.0.0
type BlazeBuilder = Builder

-- | Since 0.1.0.0
class Monoid builder => Builder builder lazy | builder -> lazy, lazy -> builder

-- | Since 0.1.0.0
builderToLazy :: Builder builder lazy => builder -> lazy

-- | Since 0.1.0.0
flushBuilder :: Builder builder lazy => builder

-- | Since 0.1.0.0
class ToBuilder value builder

-- | Since 0.1.0.0
toBuilder :: ToBuilder value builder => value -> builder

-- | Provided for type disambiguation in the presence of OverloadedStrings.
--   
--   Since 0.1.0.0
textToBuilder :: ToBuilder Text builder => Text -> builder
instance Data.Builder.Builder Data.Text.Internal.Builder.Builder Data.Text.Internal.Lazy.Text
instance Data.Builder.Builder Data.ByteString.Builder.Internal.Builder Data.ByteString.Lazy.Internal.ByteString
instance Data.Builder.ToBuilder Data.Text.Internal.Builder.Builder Data.Text.Internal.Builder.Builder
instance Data.Builder.ToBuilder Data.Text.Internal.Text Data.Text.Internal.Builder.Builder
instance Data.Builder.ToBuilder Data.Text.Internal.Lazy.Text Data.Text.Internal.Builder.Builder
instance Data.Builder.ToBuilder GHC.Types.Char Data.Text.Internal.Builder.Builder
instance a ~ GHC.Types.Char => Data.Builder.ToBuilder [a] Data.Text.Internal.Builder.Builder
instance Data.Builder.ToBuilder Data.ByteString.Builder.Internal.Builder Data.ByteString.Builder.Internal.Builder
instance Data.Builder.ToBuilder Data.Text.Internal.Text Data.ByteString.Builder.Internal.Builder
instance Data.Builder.ToBuilder Data.Text.Internal.Lazy.Text Data.ByteString.Builder.Internal.Builder
instance Data.Builder.ToBuilder GHC.Types.Char Data.ByteString.Builder.Internal.Builder
instance a ~ GHC.Types.Char => Data.Builder.ToBuilder [a] Data.ByteString.Builder.Internal.Builder
instance Data.Builder.ToBuilder Data.ByteString.Internal.ByteString Data.ByteString.Builder.Internal.Builder
instance Data.Builder.ToBuilder Data.ByteString.Lazy.Internal.ByteString Data.ByteString.Builder.Internal.Builder

module Data.IOData

-- | Data which can be read to and from files and handles.
--   
--   Note that, for lazy sequences, these operations may perform lazy I/O.
class IOData a
readFile :: (IOData a, MonadIO m) => FilePath -> m a
writeFile :: (IOData a, MonadIO m) => FilePath -> a -> m ()
getLine :: (IOData a, MonadIO m) => m a
hGetContents :: (IOData a, MonadIO m) => Handle -> m a
hGetLine :: (IOData a, MonadIO m) => Handle -> m a
hPut :: (IOData a, MonadIO m) => Handle -> a -> m ()
hPutStrLn :: (IOData a, MonadIO m) => Handle -> a -> m ()
hGetChunk :: (IOData a, MonadIO m) => Handle -> m a
instance Data.IOData.IOData Data.ByteString.Internal.ByteString
instance Data.IOData.IOData Data.ByteString.Lazy.Internal.ByteString
instance Data.IOData.IOData Data.Text.Internal.Text
instance Data.IOData.IOData Data.Text.Internal.Lazy.Text
instance GHC.Types.Char ~ c => Data.IOData.IOData [c]
