{-# LANGUAGE MultiParamTypeClasses
,FlexibleInstances
,TypeSynonymInstances #-}
module Data.ListLike.CharString (
CharString (..)
,CharStringLazy (..)
)
where
import Prelude hiding (length, head, last, null, tail, map, filter, concat,
any, lookup, init, all, foldl, foldr, foldl1, foldr1,
maximum, minimum, iterate, span, break, takeWhile,
dropWhile, reverse, zip, zipWith, sequence,
sequence_, mapM, mapM_, concatMap, and, or, sum,
product, repeat, replicate, cycle, take, drop,
splitAt, elem, notElem, unzip, lines, words,
unlines, unwords)
import Data.ListLike.Base
import Data.ListLike.String
import Data.ListLike.IO
import Data.ListLike.FoldableLL
import Data.Int
import Data.Monoid
import Data.Semigroup (Semigroup(..))
import qualified Data.ByteString.Char8 as BS
import qualified Data.ByteString.Lazy.Char8 as BSL
import Control.Arrow
newtype CharString = CS { CharString -> ByteString
unCS :: BS.ByteString }
deriving (ReadPrec [CharString]
ReadPrec CharString
Int -> ReadS CharString
ReadS [CharString]
(Int -> ReadS CharString)
-> ReadS [CharString]
-> ReadPrec CharString
-> ReadPrec [CharString]
-> Read CharString
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CharString]
$creadListPrec :: ReadPrec [CharString]
readPrec :: ReadPrec CharString
$creadPrec :: ReadPrec CharString
readList :: ReadS [CharString]
$creadList :: ReadS [CharString]
readsPrec :: Int -> ReadS CharString
$creadsPrec :: Int -> ReadS CharString
Read, Int -> CharString -> ShowS
[CharString] -> ShowS
CharString -> String
(Int -> CharString -> ShowS)
-> (CharString -> String)
-> ([CharString] -> ShowS)
-> Show CharString
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CharString] -> ShowS
$cshowList :: [CharString] -> ShowS
show :: CharString -> String
$cshow :: CharString -> String
showsPrec :: Int -> CharString -> ShowS
$cshowsPrec :: Int -> CharString -> ShowS
Show, CharString -> CharString -> Bool
(CharString -> CharString -> Bool)
-> (CharString -> CharString -> Bool) -> Eq CharString
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CharString -> CharString -> Bool
$c/= :: CharString -> CharString -> Bool
== :: CharString -> CharString -> Bool
$c== :: CharString -> CharString -> Bool
Eq, Eq CharString
Eq CharString =>
(CharString -> CharString -> Ordering)
-> (CharString -> CharString -> Bool)
-> (CharString -> CharString -> Bool)
-> (CharString -> CharString -> Bool)
-> (CharString -> CharString -> Bool)
-> (CharString -> CharString -> CharString)
-> (CharString -> CharString -> CharString)
-> Ord CharString
CharString -> CharString -> Bool
CharString -> CharString -> Ordering
CharString -> CharString -> CharString
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: CharString -> CharString -> CharString
$cmin :: CharString -> CharString -> CharString
max :: CharString -> CharString -> CharString
$cmax :: CharString -> CharString -> CharString
>= :: CharString -> CharString -> Bool
$c>= :: CharString -> CharString -> Bool
> :: CharString -> CharString -> Bool
$c> :: CharString -> CharString -> Bool
<= :: CharString -> CharString -> Bool
$c<= :: CharString -> CharString -> Bool
< :: CharString -> CharString -> Bool
$c< :: CharString -> CharString -> Bool
compare :: CharString -> CharString -> Ordering
$ccompare :: CharString -> CharString -> Ordering
$cp1Ord :: Eq CharString
Ord)
instance Semigroup CharString where
<> :: CharString -> CharString -> CharString
(<>) = CharString -> CharString -> CharString
forall a. Monoid a => a -> a -> a
mappend
instance Monoid CharString where
mempty :: CharString
mempty = ByteString -> CharString
CS ByteString
forall a. Monoid a => a
mempty
mappend :: CharString -> CharString -> CharString
mappend l :: CharString
l r :: CharString
r = ByteString -> CharString
CS (ByteString -> CharString) -> ByteString -> CharString
forall a b. (a -> b) -> a -> b
$ ByteString -> ByteString -> ByteString
forall a. Monoid a => a -> a -> a
mappend (CharString -> ByteString
unCS CharString
l) (CharString -> ByteString
unCS CharString
r)
instance FoldableLL CharString Char where
foldl :: (a -> Char -> a) -> a -> CharString -> a
foldl f :: a -> Char -> a
f i0 :: a
i0 ls :: CharString
ls = (a -> Char -> a) -> a -> ByteString -> a
forall a. (a -> Char -> a) -> a -> ByteString -> a
BS.foldl a -> Char -> a
f a
i0 (CharString -> ByteString
unCS CharString
ls)
foldl' :: (a -> Char -> a) -> a -> CharString -> a
foldl' f :: a -> Char -> a
f i0 :: a
i0 ls :: CharString
ls = (a -> Char -> a) -> a -> ByteString -> a
forall a. (a -> Char -> a) -> a -> ByteString -> a
BS.foldl' a -> Char -> a
f a
i0 (CharString -> ByteString
unCS CharString
ls)
foldl1 :: (Char -> Char -> Char) -> CharString -> Char
foldl1 f :: Char -> Char -> Char
f ls :: CharString
ls = (Char -> Char -> Char) -> ByteString -> Char
BS.foldl1 Char -> Char -> Char
f (CharString -> ByteString
unCS CharString
ls)
foldr :: (Char -> b -> b) -> b -> CharString -> b
foldr f :: Char -> b -> b
f i0 :: b
i0 ls :: CharString
ls = (Char -> b -> b) -> b -> ByteString -> b
forall a. (Char -> a -> a) -> a -> ByteString -> a
BS.foldr Char -> b -> b
f b
i0 (CharString -> ByteString
unCS CharString
ls)
foldr1 :: (Char -> Char -> Char) -> CharString -> Char
foldr1 f :: Char -> Char -> Char
f ls :: CharString
ls = (Char -> Char -> Char) -> ByteString -> Char
BS.foldr1 Char -> Char -> Char
f (CharString -> ByteString
unCS CharString
ls)
instance ListLike CharString Char where
empty :: CharString
empty = ByteString -> CharString
CS ByteString
BS.empty
singleton :: Char -> CharString
singleton = ByteString -> CharString
CS (ByteString -> CharString)
-> (Char -> ByteString) -> Char -> CharString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Char -> ByteString
BS.singleton
cons :: Char -> CharString -> CharString
cons x :: Char
x l :: CharString
l = ByteString -> CharString
CS (Char -> ByteString -> ByteString
BS.cons Char
x (CharString -> ByteString
unCS CharString
l))
snoc :: CharString -> Char -> CharString
snoc l :: CharString
l x :: Char
x = ByteString -> CharString
CS (ByteString -> Char -> ByteString
BS.snoc (CharString -> ByteString
unCS CharString
l) Char
x)
append :: CharString -> CharString -> CharString
append l :: CharString
l r :: CharString
r = ByteString -> CharString
CS (ByteString -> CharString) -> ByteString -> CharString
forall a b. (a -> b) -> a -> b
$ ByteString -> ByteString -> ByteString
BS.append (CharString -> ByteString
unCS CharString
l) (CharString -> ByteString
unCS CharString
r)
head :: CharString -> Char
head = ByteString -> Char
BS.head (ByteString -> Char)
-> (CharString -> ByteString) -> CharString -> Char
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharString -> ByteString
unCS
last :: CharString -> Char
last = ByteString -> Char
BS.last (ByteString -> Char)
-> (CharString -> ByteString) -> CharString -> Char
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharString -> ByteString
unCS
tail :: CharString -> CharString
tail = ByteString -> CharString
CS (ByteString -> CharString)
-> (CharString -> ByteString) -> CharString -> CharString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> ByteString
BS.tail (ByteString -> ByteString)
-> (CharString -> ByteString) -> CharString -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharString -> ByteString
unCS
init :: CharString -> CharString
init = ByteString -> CharString
CS (ByteString -> CharString)
-> (CharString -> ByteString) -> CharString -> CharString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> ByteString
BS.init (ByteString -> ByteString)
-> (CharString -> ByteString) -> CharString -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharString -> ByteString
unCS
null :: CharString -> Bool
null = ByteString -> Bool
BS.null (ByteString -> Bool)
-> (CharString -> ByteString) -> CharString -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharString -> ByteString
unCS
length :: CharString -> Int
length = Int -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> Int) -> (CharString -> Int) -> CharString -> Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> Int
BS.length (ByteString -> Int)
-> (CharString -> ByteString) -> CharString -> Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharString -> ByteString
unCS
rigidMap :: (Char -> Char) -> CharString -> CharString
rigidMap f :: Char -> Char
f = ByteString -> CharString
CS (ByteString -> CharString)
-> (CharString -> ByteString) -> CharString -> CharString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Char -> Char) -> ByteString -> ByteString
BS.map Char -> Char
f (ByteString -> ByteString)
-> (CharString -> ByteString) -> CharString -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharString -> ByteString
unCS
reverse :: CharString -> CharString
reverse = ByteString -> CharString
CS (ByteString -> CharString)
-> (CharString -> ByteString) -> CharString -> CharString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> ByteString
BS.reverse (ByteString -> ByteString)
-> (CharString -> ByteString) -> CharString -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharString -> ByteString
unCS
concat :: full' -> CharString
concat = ByteString -> CharString
CS (ByteString -> CharString)
-> (full' -> ByteString) -> full' -> CharString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [ByteString] -> ByteString
BS.concat ([ByteString] -> ByteString)
-> (full' -> [ByteString]) -> full' -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (CharString -> ByteString) -> [CharString] -> [ByteString]
forall full item full' item'.
(ListLike full item, ListLike full' item') =>
(item -> item') -> full -> full'
map CharString -> ByteString
unCS ([CharString] -> [ByteString])
-> (full' -> [CharString]) -> full' -> [ByteString]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. full' -> [CharString]
forall full item. ListLike full item => full -> [item]
toList
rigidConcatMap :: (Char -> CharString) -> CharString -> CharString
rigidConcatMap f :: Char -> CharString
f = ByteString -> CharString
CS (ByteString -> CharString)
-> (CharString -> ByteString) -> CharString -> CharString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Char -> ByteString) -> ByteString -> ByteString
BS.concatMap (CharString -> ByteString
unCS (CharString -> ByteString)
-> (Char -> CharString) -> Char -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Char -> CharString
f) (ByteString -> ByteString)
-> (CharString -> ByteString) -> CharString -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharString -> ByteString
unCS
any :: (Char -> Bool) -> CharString -> Bool
any p :: Char -> Bool
p = (Char -> Bool) -> ByteString -> Bool
BS.any Char -> Bool
p (ByteString -> Bool)
-> (CharString -> ByteString) -> CharString -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharString -> ByteString
unCS
all :: (Char -> Bool) -> CharString -> Bool
all p :: Char -> Bool
p = (Char -> Bool) -> ByteString -> Bool
BS.all Char -> Bool
p (ByteString -> Bool)
-> (CharString -> ByteString) -> CharString -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharString -> ByteString
unCS
maximum :: CharString -> Char
maximum = ByteString -> Char
BS.maximum (ByteString -> Char)
-> (CharString -> ByteString) -> CharString -> Char
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharString -> ByteString
unCS
minimum :: CharString -> Char
minimum = ByteString -> Char
BS.minimum (ByteString -> Char)
-> (CharString -> ByteString) -> CharString -> Char
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharString -> ByteString
unCS
replicate :: Int -> Char -> CharString
replicate i :: Int
i = ByteString -> CharString
CS (ByteString -> CharString)
-> (Char -> ByteString) -> Char -> CharString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> Char -> ByteString
BS.replicate (Int -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
i)
take :: Int -> CharString -> CharString
take i :: Int
i = ByteString -> CharString
CS (ByteString -> CharString)
-> (CharString -> ByteString) -> CharString -> CharString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> ByteString -> ByteString
BS.take (Int -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
i) (ByteString -> ByteString)
-> (CharString -> ByteString) -> CharString -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharString -> ByteString
unCS
drop :: Int -> CharString -> CharString
drop i :: Int
i = ByteString -> CharString
CS (ByteString -> CharString)
-> (CharString -> ByteString) -> CharString -> CharString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> ByteString -> ByteString
BS.drop (Int -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
i) (ByteString -> ByteString)
-> (CharString -> ByteString) -> CharString -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharString -> ByteString
unCS
splitAt :: Int -> CharString -> (CharString, CharString)
splitAt i :: Int
i = (ByteString -> CharString
CS (ByteString -> CharString)
-> (ByteString -> CharString)
-> (ByteString, ByteString)
-> (CharString, CharString)
forall (a :: * -> * -> *) b c b' c'.
Arrow a =>
a b c -> a b' c' -> a (b, b') (c, c')
*** ByteString -> CharString
CS) ((ByteString, ByteString) -> (CharString, CharString))
-> (CharString -> (ByteString, ByteString))
-> CharString
-> (CharString, CharString)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> ByteString -> (ByteString, ByteString)
BS.splitAt (Int -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
i) (ByteString -> (ByteString, ByteString))
-> (CharString -> ByteString)
-> CharString
-> (ByteString, ByteString)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharString -> ByteString
unCS
takeWhile :: (Char -> Bool) -> CharString -> CharString
takeWhile p :: Char -> Bool
p = ByteString -> CharString
CS (ByteString -> CharString)
-> (CharString -> ByteString) -> CharString -> CharString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Char -> Bool) -> ByteString -> ByteString
BS.takeWhile Char -> Bool
p (ByteString -> ByteString)
-> (CharString -> ByteString) -> CharString -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharString -> ByteString
unCS
dropWhile :: (Char -> Bool) -> CharString -> CharString
dropWhile p :: Char -> Bool
p = ByteString -> CharString
CS (ByteString -> CharString)
-> (CharString -> ByteString) -> CharString -> CharString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Char -> Bool) -> ByteString -> ByteString
BS.dropWhile Char -> Bool
p (ByteString -> ByteString)
-> (CharString -> ByteString) -> CharString -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharString -> ByteString
unCS
span :: (Char -> Bool) -> CharString -> (CharString, CharString)
span p :: Char -> Bool
p = (ByteString -> CharString
CS (ByteString -> CharString)
-> (ByteString -> CharString)
-> (ByteString, ByteString)
-> (CharString, CharString)
forall (a :: * -> * -> *) b c b' c'.
Arrow a =>
a b c -> a b' c' -> a (b, b') (c, c')
*** ByteString -> CharString
CS) ((ByteString, ByteString) -> (CharString, CharString))
-> (CharString -> (ByteString, ByteString))
-> CharString
-> (CharString, CharString)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Char -> Bool) -> ByteString -> (ByteString, ByteString)
BS.span Char -> Bool
p (ByteString -> (ByteString, ByteString))
-> (CharString -> ByteString)
-> CharString
-> (ByteString, ByteString)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharString -> ByteString
unCS
break :: (Char -> Bool) -> CharString -> (CharString, CharString)
break p :: Char -> Bool
p = (ByteString -> CharString
CS (ByteString -> CharString)
-> (ByteString -> CharString)
-> (ByteString, ByteString)
-> (CharString, CharString)
forall (a :: * -> * -> *) b c b' c'.
Arrow a =>
a b c -> a b' c' -> a (b, b') (c, c')
*** ByteString -> CharString
CS) ((ByteString, ByteString) -> (CharString, CharString))
-> (CharString -> (ByteString, ByteString))
-> CharString
-> (CharString, CharString)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Char -> Bool) -> ByteString -> (ByteString, ByteString)
BS.break Char -> Bool
p (ByteString -> (ByteString, ByteString))
-> (CharString -> ByteString)
-> CharString
-> (ByteString, ByteString)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharString -> ByteString
unCS
group :: CharString -> full'
group = [CharString] -> full'
forall full item. ListLike full item => [item] -> full
fromList ([CharString] -> full')
-> (CharString -> [CharString]) -> CharString -> full'
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ByteString -> CharString) -> [ByteString] -> [CharString]
forall full item full' item'.
(ListLike full item, ListLike full' item') =>
(item -> item') -> full -> full'
map ByteString -> CharString
CS ([ByteString] -> [CharString])
-> (CharString -> [ByteString]) -> CharString -> [CharString]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> [ByteString]
BS.group (ByteString -> [ByteString])
-> (CharString -> ByteString) -> CharString -> [ByteString]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharString -> ByteString
unCS
inits :: CharString -> full'
inits = [CharString] -> full'
forall full item. ListLike full item => [item] -> full
fromList ([CharString] -> full')
-> (CharString -> [CharString]) -> CharString -> full'
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ByteString -> CharString) -> [ByteString] -> [CharString]
forall full item full' item'.
(ListLike full item, ListLike full' item') =>
(item -> item') -> full -> full'
map ByteString -> CharString
CS ([ByteString] -> [CharString])
-> (CharString -> [ByteString]) -> CharString -> [CharString]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> [ByteString]
BS.inits (ByteString -> [ByteString])
-> (CharString -> ByteString) -> CharString -> [ByteString]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharString -> ByteString
unCS
tails :: CharString -> full'
tails = [CharString] -> full'
forall full item. ListLike full item => [item] -> full
fromList ([CharString] -> full')
-> (CharString -> [CharString]) -> CharString -> full'
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ByteString -> CharString) -> [ByteString] -> [CharString]
forall full item full' item'.
(ListLike full item, ListLike full' item') =>
(item -> item') -> full -> full'
map ByteString -> CharString
CS ([ByteString] -> [CharString])
-> (CharString -> [ByteString]) -> CharString -> [CharString]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> [ByteString]
BS.tails (ByteString -> [ByteString])
-> (CharString -> ByteString) -> CharString -> [ByteString]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharString -> ByteString
unCS
isPrefixOf :: CharString -> CharString -> Bool
isPrefixOf p :: CharString
p f :: CharString
f = ByteString -> ByteString -> Bool
BS.isPrefixOf (CharString -> ByteString
unCS CharString
p) (CharString -> ByteString
unCS CharString
f)
elem :: Char -> CharString -> Bool
elem x :: Char
x = Char -> ByteString -> Bool
BS.elem Char
x (ByteString -> Bool)
-> (CharString -> ByteString) -> CharString -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharString -> ByteString
unCS
notElem :: Char -> CharString -> Bool
notElem x :: Char
x = Char -> ByteString -> Bool
BS.notElem Char
x (ByteString -> Bool)
-> (CharString -> ByteString) -> CharString -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharString -> ByteString
unCS
find :: (Char -> Bool) -> CharString -> Maybe Char
find p :: Char -> Bool
p = (Char -> Bool) -> ByteString -> Maybe Char
BS.find Char -> Bool
p (ByteString -> Maybe Char)
-> (CharString -> ByteString) -> CharString -> Maybe Char
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharString -> ByteString
unCS
filter :: (Char -> Bool) -> CharString -> CharString
filter p :: Char -> Bool
p = ByteString -> CharString
CS (ByteString -> CharString)
-> (CharString -> ByteString) -> CharString -> CharString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Char -> Bool) -> ByteString -> ByteString
BS.filter Char -> Bool
p (ByteString -> ByteString)
-> (CharString -> ByteString) -> CharString -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharString -> ByteString
unCS
index :: CharString -> Int -> Char
index l :: CharString
l i :: Int
i = ByteString -> Int -> Char
BS.index (CharString -> ByteString
unCS CharString
l) (Int -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
i)
elemIndex :: Char -> CharString -> Maybe Int
elemIndex i :: Char
i = Char -> ByteString -> Maybe Int
BS.elemIndex Char
i (ByteString -> Maybe Int)
-> (CharString -> ByteString) -> CharString -> Maybe Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharString -> ByteString
unCS
findIndex :: (Char -> Bool) -> CharString -> Maybe Int
findIndex f :: Char -> Bool
f = (Char -> Bool) -> ByteString -> Maybe Int
BS.findIndex Char -> Bool
f (ByteString -> Maybe Int)
-> (CharString -> ByteString) -> CharString -> Maybe Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharString -> ByteString
unCS
toList :: CharString -> String
toList = ByteString -> String
BS.unpack (ByteString -> String)
-> (CharString -> ByteString) -> CharString -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharString -> ByteString
unCS
fromList :: String -> CharString
fromList = ByteString -> CharString
CS (ByteString -> CharString)
-> (String -> ByteString) -> String -> CharString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ByteString
BS.pack
genericLength :: CharString -> a
genericLength = Integer -> a
forall a. Num a => Integer -> a
fromInteger (Integer -> a) -> (CharString -> Integer) -> CharString -> a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> Integer) -> (CharString -> Int) -> CharString -> Integer
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> Int
BS.length (ByteString -> Int)
-> (CharString -> ByteString) -> CharString -> Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharString -> ByteString
unCS
genericTake :: a -> CharString -> CharString
genericTake i :: a
i = ByteString -> CharString
CS (ByteString -> CharString)
-> (CharString -> ByteString) -> CharString -> CharString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> ByteString -> ByteString
BS.take (a -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral a
i) (ByteString -> ByteString)
-> (CharString -> ByteString) -> CharString -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharString -> ByteString
unCS
genericDrop :: a -> CharString -> CharString
genericDrop i :: a
i = ByteString -> CharString
CS (ByteString -> CharString)
-> (CharString -> ByteString) -> CharString -> CharString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> ByteString -> ByteString
BS.drop (a -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral a
i) (ByteString -> ByteString)
-> (CharString -> ByteString) -> CharString -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharString -> ByteString
unCS
genericSplitAt :: a -> CharString -> (CharString, CharString)
genericSplitAt i :: a
i = (ByteString -> CharString
CS (ByteString -> CharString)
-> (ByteString -> CharString)
-> (ByteString, ByteString)
-> (CharString, CharString)
forall (a :: * -> * -> *) b c b' c'.
Arrow a =>
a b c -> a b' c' -> a (b, b') (c, c')
*** ByteString -> CharString
CS) ((ByteString, ByteString) -> (CharString, CharString))
-> (CharString -> (ByteString, ByteString))
-> CharString
-> (CharString, CharString)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> ByteString -> (ByteString, ByteString)
BS.splitAt (a -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral a
i) (ByteString -> (ByteString, ByteString))
-> (CharString -> ByteString)
-> CharString
-> (ByteString, ByteString)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharString -> ByteString
unCS
genericReplicate :: a -> Char -> CharString
genericReplicate i :: a
i = ByteString -> CharString
CS (ByteString -> CharString)
-> (Char -> ByteString) -> Char -> CharString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> Char -> ByteString
BS.replicate (a -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral a
i)
instance ListLikeIO CharString Char where
hGetLine :: Handle -> IO CharString
hGetLine h :: Handle
h = (ByteString -> CharString) -> IO ByteString -> IO CharString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ByteString -> CharString
CS (IO ByteString -> IO CharString) -> IO ByteString -> IO CharString
forall a b. (a -> b) -> a -> b
$ Handle -> IO ByteString
BS.hGetLine Handle
h
hGetContents :: Handle -> IO CharString
hGetContents = (ByteString -> CharString) -> IO ByteString -> IO CharString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ByteString -> CharString
CS (IO ByteString -> IO CharString)
-> (Handle -> IO ByteString) -> Handle -> IO CharString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Handle -> IO ByteString
BS.hGetContents
hGet :: Handle -> Int -> IO CharString
hGet h :: Handle
h n :: Int
n = (ByteString -> CharString) -> IO ByteString -> IO CharString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ByteString -> CharString
CS (IO ByteString -> IO CharString) -> IO ByteString -> IO CharString
forall a b. (a -> b) -> a -> b
$ Handle -> Int -> IO ByteString
BS.hGet Handle
h Int
n
hGetNonBlocking :: Handle -> Int -> IO CharString
hGetNonBlocking h :: Handle
h n :: Int
n = (ByteString -> CharString) -> IO ByteString -> IO CharString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ByteString -> CharString
CS (IO ByteString -> IO CharString) -> IO ByteString -> IO CharString
forall a b. (a -> b) -> a -> b
$ Handle -> Int -> IO ByteString
BS.hGetNonBlocking Handle
h Int
n
hPutStr :: Handle -> CharString -> IO ()
hPutStr h :: Handle
h = Handle -> ByteString -> IO ()
BS.hPut Handle
h (ByteString -> IO ())
-> (CharString -> ByteString) -> CharString -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharString -> ByteString
unCS
getLine :: IO CharString
getLine = (ByteString -> CharString) -> IO ByteString -> IO CharString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ByteString -> CharString
CS IO ByteString
BS.getLine
getContents :: IO CharString
getContents = (ByteString -> CharString) -> IO ByteString -> IO CharString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ByteString -> CharString
CS IO ByteString
BS.getContents
putStr :: CharString -> IO ()
putStr = ByteString -> IO ()
BS.putStr (ByteString -> IO ())
-> (CharString -> ByteString) -> CharString -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharString -> ByteString
unCS
putStrLn :: CharString -> IO ()
putStrLn = ByteString -> IO ()
BS.putStrLn (ByteString -> IO ())
-> (CharString -> ByteString) -> CharString -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharString -> ByteString
unCS
interact :: (CharString -> CharString) -> IO ()
interact f :: CharString -> CharString
f = (ByteString -> ByteString) -> IO ()
BS.interact (CharString -> ByteString
unCS (CharString -> ByteString)
-> (ByteString -> CharString) -> ByteString -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharString -> CharString
f (CharString -> CharString)
-> (ByteString -> CharString) -> ByteString -> CharString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> CharString
CS)
readFile :: String -> IO CharString
readFile = (ByteString -> CharString) -> IO ByteString -> IO CharString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ByteString -> CharString
CS (IO ByteString -> IO CharString)
-> (String -> IO ByteString) -> String -> IO CharString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> IO ByteString
BS.readFile
writeFile :: String -> CharString -> IO ()
writeFile fp :: String
fp = String -> ByteString -> IO ()
BS.writeFile String
fp (ByteString -> IO ())
-> (CharString -> ByteString) -> CharString -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharString -> ByteString
unCS
appendFile :: String -> CharString -> IO ()
appendFile fp :: String
fp = String -> ByteString -> IO ()
BS.appendFile String
fp (ByteString -> IO ())
-> (CharString -> ByteString) -> CharString -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharString -> ByteString
unCS
instance StringLike CharString where
toString :: CharString -> String
toString = ByteString -> String
BS.unpack (ByteString -> String)
-> (CharString -> ByteString) -> CharString -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharString -> ByteString
unCS
fromString :: String -> CharString
fromString = ByteString -> CharString
CS (ByteString -> CharString)
-> (String -> ByteString) -> String -> CharString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ByteString
BS.pack
newtype CharStringLazy = CSL { CharStringLazy -> ByteString
unCSL :: BSL.ByteString }
deriving (ReadPrec [CharStringLazy]
ReadPrec CharStringLazy
Int -> ReadS CharStringLazy
ReadS [CharStringLazy]
(Int -> ReadS CharStringLazy)
-> ReadS [CharStringLazy]
-> ReadPrec CharStringLazy
-> ReadPrec [CharStringLazy]
-> Read CharStringLazy
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CharStringLazy]
$creadListPrec :: ReadPrec [CharStringLazy]
readPrec :: ReadPrec CharStringLazy
$creadPrec :: ReadPrec CharStringLazy
readList :: ReadS [CharStringLazy]
$creadList :: ReadS [CharStringLazy]
readsPrec :: Int -> ReadS CharStringLazy
$creadsPrec :: Int -> ReadS CharStringLazy
Read, Int -> CharStringLazy -> ShowS
[CharStringLazy] -> ShowS
CharStringLazy -> String
(Int -> CharStringLazy -> ShowS)
-> (CharStringLazy -> String)
-> ([CharStringLazy] -> ShowS)
-> Show CharStringLazy
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CharStringLazy] -> ShowS
$cshowList :: [CharStringLazy] -> ShowS
show :: CharStringLazy -> String
$cshow :: CharStringLazy -> String
showsPrec :: Int -> CharStringLazy -> ShowS
$cshowsPrec :: Int -> CharStringLazy -> ShowS
Show, CharStringLazy -> CharStringLazy -> Bool
(CharStringLazy -> CharStringLazy -> Bool)
-> (CharStringLazy -> CharStringLazy -> Bool) -> Eq CharStringLazy
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CharStringLazy -> CharStringLazy -> Bool
$c/= :: CharStringLazy -> CharStringLazy -> Bool
== :: CharStringLazy -> CharStringLazy -> Bool
$c== :: CharStringLazy -> CharStringLazy -> Bool
Eq, Eq CharStringLazy
Eq CharStringLazy =>
(CharStringLazy -> CharStringLazy -> Ordering)
-> (CharStringLazy -> CharStringLazy -> Bool)
-> (CharStringLazy -> CharStringLazy -> Bool)
-> (CharStringLazy -> CharStringLazy -> Bool)
-> (CharStringLazy -> CharStringLazy -> Bool)
-> (CharStringLazy -> CharStringLazy -> CharStringLazy)
-> (CharStringLazy -> CharStringLazy -> CharStringLazy)
-> Ord CharStringLazy
CharStringLazy -> CharStringLazy -> Bool
CharStringLazy -> CharStringLazy -> Ordering
CharStringLazy -> CharStringLazy -> CharStringLazy
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: CharStringLazy -> CharStringLazy -> CharStringLazy
$cmin :: CharStringLazy -> CharStringLazy -> CharStringLazy
max :: CharStringLazy -> CharStringLazy -> CharStringLazy
$cmax :: CharStringLazy -> CharStringLazy -> CharStringLazy
>= :: CharStringLazy -> CharStringLazy -> Bool
$c>= :: CharStringLazy -> CharStringLazy -> Bool
> :: CharStringLazy -> CharStringLazy -> Bool
$c> :: CharStringLazy -> CharStringLazy -> Bool
<= :: CharStringLazy -> CharStringLazy -> Bool
$c<= :: CharStringLazy -> CharStringLazy -> Bool
< :: CharStringLazy -> CharStringLazy -> Bool
$c< :: CharStringLazy -> CharStringLazy -> Bool
compare :: CharStringLazy -> CharStringLazy -> Ordering
$ccompare :: CharStringLazy -> CharStringLazy -> Ordering
$cp1Ord :: Eq CharStringLazy
Ord)
instance Semigroup CharStringLazy where
<> :: CharStringLazy -> CharStringLazy -> CharStringLazy
(<>) = CharStringLazy -> CharStringLazy -> CharStringLazy
forall a. Monoid a => a -> a -> a
mappend
instance Monoid CharStringLazy where
mempty :: CharStringLazy
mempty = ByteString -> CharStringLazy
CSL ByteString
forall a. Monoid a => a
mempty
mappend :: CharStringLazy -> CharStringLazy -> CharStringLazy
mappend l :: CharStringLazy
l r :: CharStringLazy
r = ByteString -> CharStringLazy
CSL (ByteString -> CharStringLazy) -> ByteString -> CharStringLazy
forall a b. (a -> b) -> a -> b
$ ByteString -> ByteString -> ByteString
forall a. Monoid a => a -> a -> a
mappend (CharStringLazy -> ByteString
unCSL CharStringLazy
l) (CharStringLazy -> ByteString
unCSL CharStringLazy
r)
instance FoldableLL CharStringLazy Char where
foldl :: (a -> Char -> a) -> a -> CharStringLazy -> a
foldl f :: a -> Char -> a
f i0 :: a
i0 ls :: CharStringLazy
ls = (a -> Char -> a) -> a -> ByteString -> a
forall a. (a -> Char -> a) -> a -> ByteString -> a
BSL.foldl a -> Char -> a
f a
i0 (CharStringLazy -> ByteString
unCSL CharStringLazy
ls)
foldl' :: (a -> Char -> a) -> a -> CharStringLazy -> a
foldl' f :: a -> Char -> a
f i0 :: a
i0 ls :: CharStringLazy
ls = (a -> Char -> a) -> a -> ByteString -> a
forall a. (a -> Char -> a) -> a -> ByteString -> a
BSL.foldl' a -> Char -> a
f a
i0 (CharStringLazy -> ByteString
unCSL CharStringLazy
ls)
foldl1 :: (Char -> Char -> Char) -> CharStringLazy -> Char
foldl1 f :: Char -> Char -> Char
f ls :: CharStringLazy
ls = (Char -> Char -> Char) -> ByteString -> Char
BSL.foldl1 Char -> Char -> Char
f (CharStringLazy -> ByteString
unCSL CharStringLazy
ls)
foldr :: (Char -> b -> b) -> b -> CharStringLazy -> b
foldr f :: Char -> b -> b
f i0 :: b
i0 ls :: CharStringLazy
ls = (Char -> b -> b) -> b -> ByteString -> b
forall a. (Char -> a -> a) -> a -> ByteString -> a
BSL.foldr Char -> b -> b
f b
i0 (CharStringLazy -> ByteString
unCSL CharStringLazy
ls)
foldr1 :: (Char -> Char -> Char) -> CharStringLazy -> Char
foldr1 f :: Char -> Char -> Char
f ls :: CharStringLazy
ls = (Char -> Char -> Char) -> ByteString -> Char
BSL.foldr1 Char -> Char -> Char
f (CharStringLazy -> ByteString
unCSL CharStringLazy
ls)
mi64toi :: Maybe Int64 -> Maybe Int
mi64toi :: Maybe Int64 -> Maybe Int
mi64toi Nothing = Maybe Int
forall a. Maybe a
Nothing
mi64toi (Just x :: Int64
x) = Int -> Maybe Int
forall a. a -> Maybe a
Just (Int64 -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int64
x)
instance ListLike CharStringLazy Char where
empty :: CharStringLazy
empty = ByteString -> CharStringLazy
CSL ByteString
BSL.empty
singleton :: Char -> CharStringLazy
singleton = ByteString -> CharStringLazy
CSL (ByteString -> CharStringLazy)
-> (Char -> ByteString) -> Char -> CharStringLazy
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Char -> ByteString
BSL.singleton
cons :: Char -> CharStringLazy -> CharStringLazy
cons x :: Char
x l :: CharStringLazy
l = ByteString -> CharStringLazy
CSL (Char -> ByteString -> ByteString
BSL.cons Char
x (CharStringLazy -> ByteString
unCSL CharStringLazy
l))
snoc :: CharStringLazy -> Char -> CharStringLazy
snoc l :: CharStringLazy
l x :: Char
x = ByteString -> CharStringLazy
CSL (ByteString -> Char -> ByteString
BSL.snoc (CharStringLazy -> ByteString
unCSL CharStringLazy
l) Char
x)
append :: CharStringLazy -> CharStringLazy -> CharStringLazy
append l :: CharStringLazy
l r :: CharStringLazy
r = ByteString -> CharStringLazy
CSL (ByteString -> CharStringLazy) -> ByteString -> CharStringLazy
forall a b. (a -> b) -> a -> b
$ ByteString -> ByteString -> ByteString
BSL.append (CharStringLazy -> ByteString
unCSL CharStringLazy
l) (CharStringLazy -> ByteString
unCSL CharStringLazy
r)
head :: CharStringLazy -> Char
head = ByteString -> Char
BSL.head (ByteString -> Char)
-> (CharStringLazy -> ByteString) -> CharStringLazy -> Char
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharStringLazy -> ByteString
unCSL
last :: CharStringLazy -> Char
last = ByteString -> Char
BSL.last (ByteString -> Char)
-> (CharStringLazy -> ByteString) -> CharStringLazy -> Char
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharStringLazy -> ByteString
unCSL
tail :: CharStringLazy -> CharStringLazy
tail = ByteString -> CharStringLazy
CSL (ByteString -> CharStringLazy)
-> (CharStringLazy -> ByteString)
-> CharStringLazy
-> CharStringLazy
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> ByteString
BSL.tail (ByteString -> ByteString)
-> (CharStringLazy -> ByteString) -> CharStringLazy -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharStringLazy -> ByteString
unCSL
init :: CharStringLazy -> CharStringLazy
init = ByteString -> CharStringLazy
CSL (ByteString -> CharStringLazy)
-> (CharStringLazy -> ByteString)
-> CharStringLazy
-> CharStringLazy
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> ByteString
BSL.init (ByteString -> ByteString)
-> (CharStringLazy -> ByteString) -> CharStringLazy -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharStringLazy -> ByteString
unCSL
null :: CharStringLazy -> Bool
null = ByteString -> Bool
BSL.null (ByteString -> Bool)
-> (CharStringLazy -> ByteString) -> CharStringLazy -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharStringLazy -> ByteString
unCSL
length :: CharStringLazy -> Int
length = Int64 -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int64 -> Int)
-> (CharStringLazy -> Int64) -> CharStringLazy -> Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> Int64
BSL.length (ByteString -> Int64)
-> (CharStringLazy -> ByteString) -> CharStringLazy -> Int64
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharStringLazy -> ByteString
unCSL
rigidMap :: (Char -> Char) -> CharStringLazy -> CharStringLazy
rigidMap f :: Char -> Char
f = ByteString -> CharStringLazy
CSL (ByteString -> CharStringLazy)
-> (CharStringLazy -> ByteString)
-> CharStringLazy
-> CharStringLazy
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Char -> Char) -> ByteString -> ByteString
BSL.map Char -> Char
f (ByteString -> ByteString)
-> (CharStringLazy -> ByteString) -> CharStringLazy -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharStringLazy -> ByteString
unCSL
reverse :: CharStringLazy -> CharStringLazy
reverse = ByteString -> CharStringLazy
CSL (ByteString -> CharStringLazy)
-> (CharStringLazy -> ByteString)
-> CharStringLazy
-> CharStringLazy
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> ByteString
BSL.reverse (ByteString -> ByteString)
-> (CharStringLazy -> ByteString) -> CharStringLazy -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharStringLazy -> ByteString
unCSL
concat :: full' -> CharStringLazy
concat = ByteString -> CharStringLazy
CSL (ByteString -> CharStringLazy)
-> (full' -> ByteString) -> full' -> CharStringLazy
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [ByteString] -> ByteString
BSL.concat ([ByteString] -> ByteString)
-> (full' -> [ByteString]) -> full' -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (CharStringLazy -> ByteString) -> [CharStringLazy] -> [ByteString]
forall full item full' item'.
(ListLike full item, ListLike full' item') =>
(item -> item') -> full -> full'
map CharStringLazy -> ByteString
unCSL ([CharStringLazy] -> [ByteString])
-> (full' -> [CharStringLazy]) -> full' -> [ByteString]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. full' -> [CharStringLazy]
forall full item. ListLike full item => full -> [item]
toList
rigidConcatMap :: (Char -> CharStringLazy) -> CharStringLazy -> CharStringLazy
rigidConcatMap f :: Char -> CharStringLazy
f = ByteString -> CharStringLazy
CSL (ByteString -> CharStringLazy)
-> (CharStringLazy -> ByteString)
-> CharStringLazy
-> CharStringLazy
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Char -> ByteString) -> ByteString -> ByteString
BSL.concatMap (CharStringLazy -> ByteString
unCSL (CharStringLazy -> ByteString)
-> (Char -> CharStringLazy) -> Char -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Char -> CharStringLazy
f) (ByteString -> ByteString)
-> (CharStringLazy -> ByteString) -> CharStringLazy -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharStringLazy -> ByteString
unCSL
any :: (Char -> Bool) -> CharStringLazy -> Bool
any p :: Char -> Bool
p = (Char -> Bool) -> ByteString -> Bool
BSL.any Char -> Bool
p (ByteString -> Bool)
-> (CharStringLazy -> ByteString) -> CharStringLazy -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharStringLazy -> ByteString
unCSL
all :: (Char -> Bool) -> CharStringLazy -> Bool
all p :: Char -> Bool
p = (Char -> Bool) -> ByteString -> Bool
BSL.all Char -> Bool
p (ByteString -> Bool)
-> (CharStringLazy -> ByteString) -> CharStringLazy -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharStringLazy -> ByteString
unCSL
maximum :: CharStringLazy -> Char
maximum = ByteString -> Char
BSL.maximum (ByteString -> Char)
-> (CharStringLazy -> ByteString) -> CharStringLazy -> Char
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharStringLazy -> ByteString
unCSL
minimum :: CharStringLazy -> Char
minimum = ByteString -> Char
BSL.minimum (ByteString -> Char)
-> (CharStringLazy -> ByteString) -> CharStringLazy -> Char
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharStringLazy -> ByteString
unCSL
replicate :: Int -> Char -> CharStringLazy
replicate i :: Int
i = ByteString -> CharStringLazy
CSL (ByteString -> CharStringLazy)
-> (Char -> ByteString) -> Char -> CharStringLazy
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int64 -> Char -> ByteString
BSL.replicate (Int -> Int64
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
i)
take :: Int -> CharStringLazy -> CharStringLazy
take i :: Int
i = ByteString -> CharStringLazy
CSL (ByteString -> CharStringLazy)
-> (CharStringLazy -> ByteString)
-> CharStringLazy
-> CharStringLazy
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int64 -> ByteString -> ByteString
BSL.take (Int -> Int64
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
i) (ByteString -> ByteString)
-> (CharStringLazy -> ByteString) -> CharStringLazy -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharStringLazy -> ByteString
unCSL
drop :: Int -> CharStringLazy -> CharStringLazy
drop i :: Int
i = ByteString -> CharStringLazy
CSL (ByteString -> CharStringLazy)
-> (CharStringLazy -> ByteString)
-> CharStringLazy
-> CharStringLazy
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int64 -> ByteString -> ByteString
BSL.drop (Int -> Int64
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
i) (ByteString -> ByteString)
-> (CharStringLazy -> ByteString) -> CharStringLazy -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharStringLazy -> ByteString
unCSL
splitAt :: Int -> CharStringLazy -> (CharStringLazy, CharStringLazy)
splitAt i :: Int
i = (ByteString -> CharStringLazy
CSL (ByteString -> CharStringLazy)
-> (ByteString -> CharStringLazy)
-> (ByteString, ByteString)
-> (CharStringLazy, CharStringLazy)
forall (a :: * -> * -> *) b c b' c'.
Arrow a =>
a b c -> a b' c' -> a (b, b') (c, c')
*** ByteString -> CharStringLazy
CSL) ((ByteString, ByteString) -> (CharStringLazy, CharStringLazy))
-> (CharStringLazy -> (ByteString, ByteString))
-> CharStringLazy
-> (CharStringLazy, CharStringLazy)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int64 -> ByteString -> (ByteString, ByteString)
BSL.splitAt (Int -> Int64
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
i) (ByteString -> (ByteString, ByteString))
-> (CharStringLazy -> ByteString)
-> CharStringLazy
-> (ByteString, ByteString)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharStringLazy -> ByteString
unCSL
takeWhile :: (Char -> Bool) -> CharStringLazy -> CharStringLazy
takeWhile p :: Char -> Bool
p = ByteString -> CharStringLazy
CSL (ByteString -> CharStringLazy)
-> (CharStringLazy -> ByteString)
-> CharStringLazy
-> CharStringLazy
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Char -> Bool) -> ByteString -> ByteString
BSL.takeWhile Char -> Bool
p (ByteString -> ByteString)
-> (CharStringLazy -> ByteString) -> CharStringLazy -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharStringLazy -> ByteString
unCSL
dropWhile :: (Char -> Bool) -> CharStringLazy -> CharStringLazy
dropWhile p :: Char -> Bool
p = ByteString -> CharStringLazy
CSL (ByteString -> CharStringLazy)
-> (CharStringLazy -> ByteString)
-> CharStringLazy
-> CharStringLazy
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Char -> Bool) -> ByteString -> ByteString
BSL.dropWhile Char -> Bool
p (ByteString -> ByteString)
-> (CharStringLazy -> ByteString) -> CharStringLazy -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharStringLazy -> ByteString
unCSL
span :: (Char -> Bool)
-> CharStringLazy -> (CharStringLazy, CharStringLazy)
span p :: Char -> Bool
p = (ByteString -> CharStringLazy
CSL (ByteString -> CharStringLazy)
-> (ByteString -> CharStringLazy)
-> (ByteString, ByteString)
-> (CharStringLazy, CharStringLazy)
forall (a :: * -> * -> *) b c b' c'.
Arrow a =>
a b c -> a b' c' -> a (b, b') (c, c')
*** ByteString -> CharStringLazy
CSL) ((ByteString, ByteString) -> (CharStringLazy, CharStringLazy))
-> (CharStringLazy -> (ByteString, ByteString))
-> CharStringLazy
-> (CharStringLazy, CharStringLazy)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Char -> Bool) -> ByteString -> (ByteString, ByteString)
BSL.span Char -> Bool
p (ByteString -> (ByteString, ByteString))
-> (CharStringLazy -> ByteString)
-> CharStringLazy
-> (ByteString, ByteString)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharStringLazy -> ByteString
unCSL
break :: (Char -> Bool)
-> CharStringLazy -> (CharStringLazy, CharStringLazy)
break p :: Char -> Bool
p = (ByteString -> CharStringLazy
CSL (ByteString -> CharStringLazy)
-> (ByteString -> CharStringLazy)
-> (ByteString, ByteString)
-> (CharStringLazy, CharStringLazy)
forall (a :: * -> * -> *) b c b' c'.
Arrow a =>
a b c -> a b' c' -> a (b, b') (c, c')
*** ByteString -> CharStringLazy
CSL) ((ByteString, ByteString) -> (CharStringLazy, CharStringLazy))
-> (CharStringLazy -> (ByteString, ByteString))
-> CharStringLazy
-> (CharStringLazy, CharStringLazy)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Char -> Bool) -> ByteString -> (ByteString, ByteString)
BSL.break Char -> Bool
p (ByteString -> (ByteString, ByteString))
-> (CharStringLazy -> ByteString)
-> CharStringLazy
-> (ByteString, ByteString)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharStringLazy -> ByteString
unCSL
group :: CharStringLazy -> full'
group = [CharStringLazy] -> full'
forall full item. ListLike full item => [item] -> full
fromList ([CharStringLazy] -> full')
-> (CharStringLazy -> [CharStringLazy]) -> CharStringLazy -> full'
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ByteString -> CharStringLazy) -> [ByteString] -> [CharStringLazy]
forall full item full' item'.
(ListLike full item, ListLike full' item') =>
(item -> item') -> full -> full'
map ByteString -> CharStringLazy
CSL ([ByteString] -> [CharStringLazy])
-> (CharStringLazy -> [ByteString])
-> CharStringLazy
-> [CharStringLazy]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> [ByteString]
BSL.group (ByteString -> [ByteString])
-> (CharStringLazy -> ByteString) -> CharStringLazy -> [ByteString]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharStringLazy -> ByteString
unCSL
inits :: CharStringLazy -> full'
inits = [CharStringLazy] -> full'
forall full item. ListLike full item => [item] -> full
fromList ([CharStringLazy] -> full')
-> (CharStringLazy -> [CharStringLazy]) -> CharStringLazy -> full'
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ByteString -> CharStringLazy) -> [ByteString] -> [CharStringLazy]
forall full item full' item'.
(ListLike full item, ListLike full' item') =>
(item -> item') -> full -> full'
map ByteString -> CharStringLazy
CSL ([ByteString] -> [CharStringLazy])
-> (CharStringLazy -> [ByteString])
-> CharStringLazy
-> [CharStringLazy]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> [ByteString]
BSL.inits (ByteString -> [ByteString])
-> (CharStringLazy -> ByteString) -> CharStringLazy -> [ByteString]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharStringLazy -> ByteString
unCSL
tails :: CharStringLazy -> full'
tails = [CharStringLazy] -> full'
forall full item. ListLike full item => [item] -> full
fromList ([CharStringLazy] -> full')
-> (CharStringLazy -> [CharStringLazy]) -> CharStringLazy -> full'
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ByteString -> CharStringLazy) -> [ByteString] -> [CharStringLazy]
forall full item full' item'.
(ListLike full item, ListLike full' item') =>
(item -> item') -> full -> full'
map ByteString -> CharStringLazy
CSL ([ByteString] -> [CharStringLazy])
-> (CharStringLazy -> [ByteString])
-> CharStringLazy
-> [CharStringLazy]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> [ByteString]
BSL.tails (ByteString -> [ByteString])
-> (CharStringLazy -> ByteString) -> CharStringLazy -> [ByteString]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharStringLazy -> ByteString
unCSL
isPrefixOf :: CharStringLazy -> CharStringLazy -> Bool
isPrefixOf p :: CharStringLazy
p f :: CharStringLazy
f = ByteString -> ByteString -> Bool
BSL.isPrefixOf (CharStringLazy -> ByteString
unCSL CharStringLazy
p) (CharStringLazy -> ByteString
unCSL CharStringLazy
f)
elem :: Char -> CharStringLazy -> Bool
elem x :: Char
x = Char -> ByteString -> Bool
BSL.elem Char
x (ByteString -> Bool)
-> (CharStringLazy -> ByteString) -> CharStringLazy -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharStringLazy -> ByteString
unCSL
notElem :: Char -> CharStringLazy -> Bool
notElem x :: Char
x = Char -> ByteString -> Bool
BSL.notElem Char
x (ByteString -> Bool)
-> (CharStringLazy -> ByteString) -> CharStringLazy -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharStringLazy -> ByteString
unCSL
find :: (Char -> Bool) -> CharStringLazy -> Maybe Char
find p :: Char -> Bool
p = (Char -> Bool) -> ByteString -> Maybe Char
BSL.find Char -> Bool
p (ByteString -> Maybe Char)
-> (CharStringLazy -> ByteString) -> CharStringLazy -> Maybe Char
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharStringLazy -> ByteString
unCSL
filter :: (Char -> Bool) -> CharStringLazy -> CharStringLazy
filter p :: Char -> Bool
p = ByteString -> CharStringLazy
CSL (ByteString -> CharStringLazy)
-> (CharStringLazy -> ByteString)
-> CharStringLazy
-> CharStringLazy
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Char -> Bool) -> ByteString -> ByteString
BSL.filter Char -> Bool
p (ByteString -> ByteString)
-> (CharStringLazy -> ByteString) -> CharStringLazy -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharStringLazy -> ByteString
unCSL
index :: CharStringLazy -> Int -> Char
index l :: CharStringLazy
l i :: Int
i = ByteString -> Int64 -> Char
BSL.index (CharStringLazy -> ByteString
unCSL CharStringLazy
l) (Int -> Int64
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
i)
elemIndex :: Char -> CharStringLazy -> Maybe Int
elemIndex i :: Char
i = Maybe Int64 -> Maybe Int
mi64toi (Maybe Int64 -> Maybe Int)
-> (CharStringLazy -> Maybe Int64) -> CharStringLazy -> Maybe Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Char -> ByteString -> Maybe Int64
BSL.elemIndex Char
i (ByteString -> Maybe Int64)
-> (CharStringLazy -> ByteString) -> CharStringLazy -> Maybe Int64
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharStringLazy -> ByteString
unCSL
findIndex :: (Char -> Bool) -> CharStringLazy -> Maybe Int
findIndex f :: Char -> Bool
f = Maybe Int64 -> Maybe Int
mi64toi (Maybe Int64 -> Maybe Int)
-> (CharStringLazy -> Maybe Int64) -> CharStringLazy -> Maybe Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Char -> Bool) -> ByteString -> Maybe Int64
BSL.findIndex Char -> Bool
f (ByteString -> Maybe Int64)
-> (CharStringLazy -> ByteString) -> CharStringLazy -> Maybe Int64
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharStringLazy -> ByteString
unCSL
toList :: CharStringLazy -> String
toList = ByteString -> String
BSL.unpack (ByteString -> String)
-> (CharStringLazy -> ByteString) -> CharStringLazy -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharStringLazy -> ByteString
unCSL
fromList :: String -> CharStringLazy
fromList = ByteString -> CharStringLazy
CSL (ByteString -> CharStringLazy)
-> (String -> ByteString) -> String -> CharStringLazy
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ByteString
BSL.pack
genericLength :: CharStringLazy -> a
genericLength = Integer -> a
forall a. Num a => Integer -> a
fromInteger (Integer -> a)
-> (CharStringLazy -> Integer) -> CharStringLazy -> a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int64 -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int64 -> Integer)
-> (CharStringLazy -> Int64) -> CharStringLazy -> Integer
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> Int64
BSL.length (ByteString -> Int64)
-> (CharStringLazy -> ByteString) -> CharStringLazy -> Int64
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharStringLazy -> ByteString
unCSL
genericTake :: a -> CharStringLazy -> CharStringLazy
genericTake i :: a
i = ByteString -> CharStringLazy
CSL (ByteString -> CharStringLazy)
-> (CharStringLazy -> ByteString)
-> CharStringLazy
-> CharStringLazy
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int64 -> ByteString -> ByteString
BSL.take (a -> Int64
forall a b. (Integral a, Num b) => a -> b
fromIntegral a
i) (ByteString -> ByteString)
-> (CharStringLazy -> ByteString) -> CharStringLazy -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharStringLazy -> ByteString
unCSL
genericDrop :: a -> CharStringLazy -> CharStringLazy
genericDrop i :: a
i = ByteString -> CharStringLazy
CSL (ByteString -> CharStringLazy)
-> (CharStringLazy -> ByteString)
-> CharStringLazy
-> CharStringLazy
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int64 -> ByteString -> ByteString
BSL.drop (a -> Int64
forall a b. (Integral a, Num b) => a -> b
fromIntegral a
i) (ByteString -> ByteString)
-> (CharStringLazy -> ByteString) -> CharStringLazy -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharStringLazy -> ByteString
unCSL
genericSplitAt :: a -> CharStringLazy -> (CharStringLazy, CharStringLazy)
genericSplitAt i :: a
i = (ByteString -> CharStringLazy
CSL (ByteString -> CharStringLazy)
-> (ByteString -> CharStringLazy)
-> (ByteString, ByteString)
-> (CharStringLazy, CharStringLazy)
forall (a :: * -> * -> *) b c b' c'.
Arrow a =>
a b c -> a b' c' -> a (b, b') (c, c')
*** ByteString -> CharStringLazy
CSL) ((ByteString, ByteString) -> (CharStringLazy, CharStringLazy))
-> (CharStringLazy -> (ByteString, ByteString))
-> CharStringLazy
-> (CharStringLazy, CharStringLazy)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int64 -> ByteString -> (ByteString, ByteString)
BSL.splitAt (a -> Int64
forall a b. (Integral a, Num b) => a -> b
fromIntegral a
i) (ByteString -> (ByteString, ByteString))
-> (CharStringLazy -> ByteString)
-> CharStringLazy
-> (ByteString, ByteString)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharStringLazy -> ByteString
unCSL
genericReplicate :: a -> Char -> CharStringLazy
genericReplicate i :: a
i = ByteString -> CharStringLazy
CSL (ByteString -> CharStringLazy)
-> (Char -> ByteString) -> Char -> CharStringLazy
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int64 -> Char -> ByteString
BSL.replicate (a -> Int64
forall a b. (Integral a, Num b) => a -> b
fromIntegral a
i)
strict2lazy :: BS.ByteString -> CharStringLazy
strict2lazy :: ByteString -> CharStringLazy
strict2lazy b :: ByteString
b = ByteString -> CharStringLazy
CSL (ByteString -> CharStringLazy) -> ByteString -> CharStringLazy
forall a b. (a -> b) -> a -> b
$ [ByteString] -> ByteString
BSL.fromChunks [ByteString
b]
instance ListLikeIO CharStringLazy Char where
hGetLine :: Handle -> IO CharStringLazy
hGetLine h :: Handle
h = (ByteString -> CharStringLazy)
-> IO ByteString -> IO CharStringLazy
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ByteString -> CharStringLazy
strict2lazy (IO ByteString -> IO CharStringLazy)
-> IO ByteString -> IO CharStringLazy
forall a b. (a -> b) -> a -> b
$ Handle -> IO ByteString
BS.hGetLine Handle
h
hGetContents :: Handle -> IO CharStringLazy
hGetContents = (ByteString -> CharStringLazy)
-> IO ByteString -> IO CharStringLazy
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ByteString -> CharStringLazy
CSL (IO ByteString -> IO CharStringLazy)
-> (Handle -> IO ByteString) -> Handle -> IO CharStringLazy
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Handle -> IO ByteString
BSL.hGetContents
hGet :: Handle -> Int -> IO CharStringLazy
hGet h :: Handle
h n :: Int
n = (ByteString -> CharStringLazy)
-> IO ByteString -> IO CharStringLazy
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ByteString -> CharStringLazy
CSL (IO ByteString -> IO CharStringLazy)
-> IO ByteString -> IO CharStringLazy
forall a b. (a -> b) -> a -> b
$ Handle -> Int -> IO ByteString
BSL.hGet Handle
h Int
n
hGetNonBlocking :: Handle -> Int -> IO CharStringLazy
hGetNonBlocking h :: Handle
h n :: Int
n = (ByteString -> CharStringLazy)
-> IO ByteString -> IO CharStringLazy
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ByteString -> CharStringLazy
CSL (IO ByteString -> IO CharStringLazy)
-> IO ByteString -> IO CharStringLazy
forall a b. (a -> b) -> a -> b
$ Handle -> Int -> IO ByteString
BSL.hGetNonBlocking Handle
h Int
n
hPutStr :: Handle -> CharStringLazy -> IO ()
hPutStr h :: Handle
h = Handle -> ByteString -> IO ()
BSL.hPut Handle
h (ByteString -> IO ())
-> (CharStringLazy -> ByteString) -> CharStringLazy -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharStringLazy -> ByteString
unCSL
getLine :: IO CharStringLazy
getLine = (ByteString -> CharStringLazy)
-> IO ByteString -> IO CharStringLazy
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ByteString -> CharStringLazy
strict2lazy IO ByteString
BS.getLine
getContents :: IO CharStringLazy
getContents = (ByteString -> CharStringLazy)
-> IO ByteString -> IO CharStringLazy
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ByteString -> CharStringLazy
CSL IO ByteString
BSL.getContents
putStr :: CharStringLazy -> IO ()
putStr = ByteString -> IO ()
BSL.putStr (ByteString -> IO ())
-> (CharStringLazy -> ByteString) -> CharStringLazy -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharStringLazy -> ByteString
unCSL
putStrLn :: CharStringLazy -> IO ()
putStrLn = ByteString -> IO ()
BSL.putStrLn (ByteString -> IO ())
-> (CharStringLazy -> ByteString) -> CharStringLazy -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharStringLazy -> ByteString
unCSL
interact :: (CharStringLazy -> CharStringLazy) -> IO ()
interact f :: CharStringLazy -> CharStringLazy
f = (ByteString -> ByteString) -> IO ()
BSL.interact (CharStringLazy -> ByteString
unCSL (CharStringLazy -> ByteString)
-> (ByteString -> CharStringLazy) -> ByteString -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharStringLazy -> CharStringLazy
f (CharStringLazy -> CharStringLazy)
-> (ByteString -> CharStringLazy) -> ByteString -> CharStringLazy
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> CharStringLazy
CSL)
readFile :: String -> IO CharStringLazy
readFile = (ByteString -> CharStringLazy)
-> IO ByteString -> IO CharStringLazy
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ByteString -> CharStringLazy
CSL (IO ByteString -> IO CharStringLazy)
-> (String -> IO ByteString) -> String -> IO CharStringLazy
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> IO ByteString
BSL.readFile
writeFile :: String -> CharStringLazy -> IO ()
writeFile fp :: String
fp = String -> ByteString -> IO ()
BSL.writeFile String
fp (ByteString -> IO ())
-> (CharStringLazy -> ByteString) -> CharStringLazy -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharStringLazy -> ByteString
unCSL
appendFile :: String -> CharStringLazy -> IO ()
appendFile fp :: String
fp = String -> ByteString -> IO ()
BSL.appendFile String
fp (ByteString -> IO ())
-> (CharStringLazy -> ByteString) -> CharStringLazy -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharStringLazy -> ByteString
unCSL
instance StringLike CharStringLazy where
toString :: CharStringLazy -> String
toString = ByteString -> String
BSL.unpack (ByteString -> String)
-> (CharStringLazy -> ByteString) -> CharStringLazy -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CharStringLazy -> ByteString
unCSL
fromString :: String -> CharStringLazy
fromString = ByteString -> CharStringLazy
CSL (ByteString -> CharStringLazy)
-> (String -> ByteString) -> String -> CharStringLazy
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ByteString
BSL.pack