hw-streams-0.0.0.6: src/HaskellWorks/Data/Streams/ByteString.hs
{-# LANGUAGE ScopedTypeVariables #-}
module HaskellWorks.Data.Streams.ByteString
( streamChunks
, stream
) where
import Data.Word
import HaskellWorks.Data.Streams.Size
import HaskellWorks.Data.Streams.Stream (Step (..), Stream (..))
import Prelude hiding (foldl, map, sum, zipWith)
import qualified Data.ByteString as BS
streamChunks :: [BS.ByteString] -> Stream Word8
streamChunks ass = Stream step (ass, 0) Unknown
where step (bss, i) = case bss of
cs:css -> if i < BS.length cs
then Yield (BS.index cs i) (bss, i + 1)
else Skip (css, 0)
[] -> Done
{-# INLINE [1] streamChunks #-}
stream :: BS.ByteString -> Stream Word8
stream bs = Stream step (bs, 0) Unknown
where step (cs, i) = if i < BS.length cs
then Yield (BS.index cs i) (cs, i + 1)
else Done
{-# INLINE [1] stream #-}