module ClassyPrelude.LByteString
( LByteString
) where
import qualified Prelude
import Prelude ((.))
import ClassyPrelude.Classes
import qualified Data.ByteString.Lazy as L
import Control.Monad.IO.Class (MonadIO, liftIO)
import qualified Filesystem.Path.CurrentOS as F
import Data.Word (Word8)
import Data.Int (Int64)
type LByteString = L.ByteString
instance (co ~ LByteString, i ~ Word8, o ~ Word8) => CanMapFunc LByteString co i o where
mapFunc = L.map
instance (co ~ LByteString, i ~ Word8, o ~ LByteString) => CanConcatMapFunc LByteString co i o where
concatMapFunc = L.concatMap
instance CanFilterFunc LByteString Word8 where
filterFunc = L.filter
instance CanLength LByteString Int64 where
length = L.length
instance CanSingleton LByteString Word8 where
singleton = L.singleton
instance CanNull LByteString where
null = L.null
instance CanPack LByteString Word8 where
pack = L.pack
unpack = L.unpack
instance CanEmpty LByteString where
empty = L.empty
instance MonadIO m => CanReadFile (m LByteString) where
readFile = liftIO . L.readFile . F.encodeString
instance CanWriteFileFunc LByteString where
writeFileFunc fp = liftIO . L.writeFile (F.encodeString fp)
instance CanBreak LByteString Word8 where
break = L.break
span = L.span
dropWhile = L.dropWhile
takeWhile = L.takeWhile
instance CanAny LByteString Word8 where
any = L.any
all = L.all
instance CanSplitAt LByteString Int64 where
splitAt = L.splitAt