-- | Fake PackedString type
module PackedString{-(module PS)-} where
--import Data.PackedString as PS

newtype PackedString = PS String deriving (PackedString -> PackedString -> Bool
(PackedString -> PackedString -> Bool)
-> (PackedString -> PackedString -> Bool) -> Eq PackedString
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PackedString -> PackedString -> Bool
$c/= :: PackedString -> PackedString -> Bool
== :: PackedString -> PackedString -> Bool
$c== :: PackedString -> PackedString -> Bool
Eq,Eq PackedString
Eq PackedString
-> (PackedString -> PackedString -> Ordering)
-> (PackedString -> PackedString -> Bool)
-> (PackedString -> PackedString -> Bool)
-> (PackedString -> PackedString -> Bool)
-> (PackedString -> PackedString -> Bool)
-> (PackedString -> PackedString -> PackedString)
-> (PackedString -> PackedString -> PackedString)
-> Ord PackedString
PackedString -> PackedString -> Bool
PackedString -> PackedString -> Ordering
PackedString -> PackedString -> PackedString
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 :: PackedString -> PackedString -> PackedString
$cmin :: PackedString -> PackedString -> PackedString
max :: PackedString -> PackedString -> PackedString
$cmax :: PackedString -> PackedString -> PackedString
>= :: PackedString -> PackedString -> Bool
$c>= :: PackedString -> PackedString -> Bool
> :: PackedString -> PackedString -> Bool
$c> :: PackedString -> PackedString -> Bool
<= :: PackedString -> PackedString -> Bool
$c<= :: PackedString -> PackedString -> Bool
< :: PackedString -> PackedString -> Bool
$c< :: PackedString -> PackedString -> Bool
compare :: PackedString -> PackedString -> Ordering
$ccompare :: PackedString -> PackedString -> Ordering
$cp1Ord :: Eq PackedString
Ord)

instance Show PackedString where
  showsPrec :: Int -> PackedString -> ShowS
showsPrec Int
n (PS String
s) String
r = String
sString -> ShowS
forall a. [a] -> [a] -> [a]
++String
r

instance Read PackedString where
  readsPrec :: Int -> ReadS PackedString
readsPrec Int
n String
s0 = [(String -> PackedString
PS String
s,String
r)|(String
s,String
r)<-Int -> ReadS String
forall a. Read a => Int -> ReadS a
readsPrec Int
n String
s0]

packString :: String -> PackedString
packString = String -> PackedString
PS
unpackPS :: PackedString -> String
unpackPS (PS String
s) = String
s

nullPS :: PackedString -> Bool
nullPS (PS String
s) = String -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null String
s
lengthPS :: PackedString -> Int
lengthPS (PS String
s) = String -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length String
s

appendPS :: PackedString -> PackedString -> PackedString
appendPS (PS String
s1) (PS String
s2) = String -> PackedString
PS (String
s1String -> ShowS
forall a. [a] -> [a] -> [a]
++String
s2)
mapPS :: (Char -> Char) -> PackedString -> PackedString
mapPS Char -> Char
f (PS String
s) = String -> PackedString
PS ((Char -> Char) -> ShowS
forall a b. (a -> b) -> [a] -> [b]
map Char -> Char
f String
s)
nilPS :: PackedString
nilPS = String -> PackedString
PS String
""
reversePS :: PackedString -> PackedString
reversePS (PS String
s) = String -> PackedString
PS (ShowS
forall a. [a] -> [a]
reverse String
s)