{-# LANGUAGE TypeSynonymInstances, FlexibleInstances #-}
module Text.Show.ByteString (
Show (..)
, show
, putAscii
, putUTF8
, putAsciiStr
, putUTF8Str
, unsafePutDigit
, putDigit
, showpIntAtBase
, showpGFloat
, showpFFloat
, showpEFloat
, unlinesP
, unwordsP
, showpParen
, print
, Put
, PutM(..)
, runPut
) where
import Prelude hiding (Show(..), print, putStrLn)
import qualified Prelude
import Data.Binary.Put
import Data.ByteString.Lazy.Char8
import Data.Int
import Data.Word
import Data.Ratio
import Data.Complex
import Data.Array
import qualified Data.Map as M
import qualified Data.Set as S
import Text.Show.ByteString.Util ( putAscii , putUTF8
, putAsciiStr, putUTF8Str
, unsafePutDigit
)
import Text.Show.ByteString.Char
import Text.Show.ByteString.Int
import Text.Show.ByteString.Integer
import Text.Show.ByteString.Float
class Show a where
showpPrec :: Int -> a -> Put
showp :: a -> Put
showpList :: [a] -> Put
showpPrec _ = a -> Put
forall a. Show a => a -> Put
showp
showp = Int -> a -> Put
forall a. Show a => Int -> a -> Put
showpPrec 0
showpList [] = Word8 -> Put
putWord8 91 Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Word8 -> Put
putWord8 93
showpList (x :: a
x:xs :: [a]
xs) = Word8 -> Put
putWord8 91 Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> a -> Put
forall a. Show a => a -> Put
showp a
x Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> [a] -> Put
forall a. Show a => [a] -> Put
go [a]
xs
where
go :: [a] -> Put
go (y :: a
y:ys :: [a]
ys) = Word8 -> Put
putWord8 44 Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> a -> Put
forall a. Show a => a -> Put
showp a
y Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> [a] -> Put
go [a]
ys
go [ ] = Word8 -> Put
putWord8 93
show :: Show a => a -> ByteString
show :: a -> ByteString
show = Put -> ByteString
runPut (Put -> ByteString) -> (a -> Put) -> a -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> Put
forall a. Show a => a -> Put
showp
showpParen :: Bool -> Put -> Put
showpParen :: Bool -> Put -> Put
showpParen b :: Bool
b p :: Put
p | Bool
b = Char -> Put
putAscii '(' Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Put
p Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Char -> Put
putAscii ')'
| Bool
otherwise = Put
p
print :: Show a => a -> IO ()
print :: a -> IO ()
print = ByteString -> IO ()
putStrLn (ByteString -> IO ()) -> (a -> ByteString) -> a -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> ByteString
forall a. Show a => a -> ByteString
show
unlinesP :: [Put] -> Put
unlinesP :: [Put] -> Put
unlinesP [ ] = () -> Put
forall (m :: * -> *) a. Monad m => a -> m a
return ()
unlinesP (p :: Put
p:ps :: [Put]
ps) = Put
p Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Char -> Put
putAscii '\n' Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> [Put] -> Put
unlinesP [Put]
ps
unwordsP :: [Put] -> Put
unwordsP :: [Put] -> Put
unwordsP [ ] = () -> Put
forall (m :: * -> *) a. Monad m => a -> m a
return ()
unwordsP [p :: Put
p] = Put
p
unwordsP (p :: Put
p:ps :: [Put]
ps) = Put
p Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Char -> Put
putAscii ' ' Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> [Put] -> Put
unwordsP [Put]
ps
putDigit :: Int -> Put
putDigit :: Int -> Put
putDigit i :: Int
i
| Int
i Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
< 0 = [Char] -> Put
forall a. HasCallStack => [Char] -> a
error ([Char] -> Put) -> [Char] -> Put
forall a b. (a -> b) -> a -> b
$ "putDigit: Negative integer: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ Int -> [Char]
forall a. Show a => a -> [Char]
Prelude.show Int
i
| Int
i Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
> 9 = [Char] -> Put
forall a. HasCallStack => [Char] -> a
error ([Char] -> Put) -> [Char] -> Put
forall a b. (a -> b) -> a -> b
$ "putDigit: Non-decimal digit: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ Int -> [Char]
forall a. Show a => a -> [Char]
Prelude.show Int
i
| Bool
otherwise = Int -> Put
unsafePutDigit Int
i
instance Show Put where
showp :: Put -> Put
showp p :: Put
p = Put
p
instance Show () where
showp :: () -> Put
showp () = Char -> Put
putAscii '(' Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Char -> Put
putAscii ')'
instance Show Char where
showp :: Char -> Put
showp = Char -> Put
showpChar
showpList :: [Char] -> Put
showpList = [Char] -> Put
showpString
instance Show Bool where
showp :: Bool -> Put
showp True = [Char] -> Put
putAsciiStr "True"
showp False = [Char] -> Put
putAsciiStr "False"
instance (Show a) => Show [a] where
showp :: [a] -> Put
showp = [a] -> Put
forall a. Show a => [a] -> Put
showpList
instance Show Int where
showp :: Int -> Put
showp = Int -> Put
showpInt
showpPrec :: Int -> Int -> Put
showpPrec k :: Int
k i :: Int
i = Bool -> Put -> Put
showpParen (Int
i Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
< 0 Bool -> Bool -> Bool
&& Int
k Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
> 0) (Put -> Put) -> Put -> Put
forall a b. (a -> b) -> a -> b
$ Int -> Put
showpInt Int
i
instance Show Int8 where
showp :: Int8 -> Put
showp = Int8 -> Put
showpInt8
showpPrec :: Int -> Int8 -> Put
showpPrec k :: Int
k i :: Int8
i = Bool -> Put -> Put
showpParen (Int8
i Int8 -> Int8 -> Bool
forall a. Ord a => a -> a -> Bool
< 0 Bool -> Bool -> Bool
&& Int
k Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
> 0) (Put -> Put) -> Put -> Put
forall a b. (a -> b) -> a -> b
$ Int8 -> Put
showpInt8 Int8
i
instance Show Int16 where
showp :: Int16 -> Put
showp = Int16 -> Put
showpInt16
showpPrec :: Int -> Int16 -> Put
showpPrec k :: Int
k i :: Int16
i = Bool -> Put -> Put
showpParen (Int16
i Int16 -> Int16 -> Bool
forall a. Ord a => a -> a -> Bool
< 0 Bool -> Bool -> Bool
&& Int
k Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
> 0) (Put -> Put) -> Put -> Put
forall a b. (a -> b) -> a -> b
$ Int16 -> Put
showpInt16 Int16
i
instance Show Int32 where
showp :: Int32 -> Put
showp = Int32 -> Put
showpInt32
showpPrec :: Int -> Int32 -> Put
showpPrec k :: Int
k i :: Int32
i = Bool -> Put -> Put
showpParen (Int32
i Int32 -> Int32 -> Bool
forall a. Ord a => a -> a -> Bool
< 0 Bool -> Bool -> Bool
&& Int
k Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
> 0) (Put -> Put) -> Put -> Put
forall a b. (a -> b) -> a -> b
$ Int32 -> Put
showpInt32 Int32
i
instance Show Int64 where
showp :: Int64 -> Put
showp = Int64 -> Put
showpInt64
showpPrec :: Int -> Int64 -> Put
showpPrec k :: Int
k i :: Int64
i = Bool -> Put -> Put
showpParen (Int64
i Int64 -> Int64 -> Bool
forall a. Ord a => a -> a -> Bool
< 0 Bool -> Bool -> Bool
&& Int
k Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
> 0) (Put -> Put) -> Put -> Put
forall a b. (a -> b) -> a -> b
$ Int64 -> Put
showpInt64 Int64
i
instance Show Word where
showp :: Word -> Put
showp = Word -> Put
showpWord
instance Show Word8 where
showp :: Word8 -> Put
showp = Word8 -> Put
showpWord8
instance Show Word16 where
showp :: Word16 -> Put
showp = Word16 -> Put
showpWord16
instance Show Word32 where
showp :: Word32 -> Put
showp = Word32 -> Put
showpWord32
instance Show Word64 where
showp :: Word64 -> Put
showp = Word64 -> Put
showpWord64
instance Show Integer where
showp :: Integer -> Put
showp = Integer -> Put
showpInteger
showpPrec :: Int -> Integer -> Put
showpPrec k :: Int
k i :: Integer
i = Bool -> Put -> Put
showpParen (Integer
i Integer -> Integer -> Bool
forall a. Ord a => a -> a -> Bool
< 0 Bool -> Bool -> Bool
&& Int
k Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
> 0) (Put -> Put) -> Put -> Put
forall a b. (a -> b) -> a -> b
$ Integer -> Put
showpInteger Integer
i
instance Show Float where
showp :: Float -> Put
showp = Maybe Int -> Float -> Put
forall a. RealFloat a => Maybe Int -> a -> Put
showpGFloat Maybe Int
forall a. Maybe a
Nothing
showpPrec :: Int -> Float -> Put
showpPrec k :: Int
k f :: Float
f = Bool -> Put -> Put
showpParen (Float
f Float -> Float -> Bool
forall a. Ord a => a -> a -> Bool
< 0 Bool -> Bool -> Bool
&& Int
k Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
> 0) (Put -> Put) -> Put -> Put
forall a b. (a -> b) -> a -> b
$ Maybe Int -> Float -> Put
forall a. RealFloat a => Maybe Int -> a -> Put
showpGFloat Maybe Int
forall a. Maybe a
Nothing Float
f
instance Show Double where
showp :: Double -> Put
showp = Maybe Int -> Double -> Put
forall a. RealFloat a => Maybe Int -> a -> Put
showpGFloat Maybe Int
forall a. Maybe a
Nothing
showpPrec :: Int -> Double -> Put
showpPrec k :: Int
k f :: Double
f = Bool -> Put -> Put
showpParen (Double
f Double -> Double -> Bool
forall a. Ord a => a -> a -> Bool
< 0 Bool -> Bool -> Bool
&& Int
k Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
> 0) (Put -> Put) -> Put -> Put
forall a b. (a -> b) -> a -> b
$ Maybe Int -> Double -> Put
forall a. RealFloat a => Maybe Int -> a -> Put
showpGFloat Maybe Int
forall a. Maybe a
Nothing Double
f
instance (Show a, Integral a) => Show (Ratio a) where
showpPrec :: Int -> Ratio a -> Put
showpPrec k :: Int
k q :: Ratio a
q = Bool -> Put -> Put
showpParen (Int
k Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
> 7) (Put -> Put) -> Put -> Put
forall a b. (a -> b) -> a -> b
$ Int -> a -> Put
forall a. Show a => Int -> a -> Put
showpPrec 8 (Ratio a -> a
forall a. Ratio a -> a
numerator Ratio a
q) Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>
Char -> Put
putAscii '%' Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> a -> Put
forall a. Show a => a -> Put
showp (Ratio a -> a
forall a. Ratio a -> a
denominator Ratio a
q)
instance (Show a, RealFloat a) => Show (Complex a) where
showpPrec :: Int -> Complex a -> Put
showpPrec k :: Int
k (a :: a
a :+ b :: a
b) = Bool -> Put -> Put
showpParen (Int
k Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
> 6) (Put -> Put) -> Put -> Put
forall a b. (a -> b) -> a -> b
$ Int -> a -> Put
forall a. Show a => Int -> a -> Put
showpPrec 7 a
a Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>
Char -> Put
putAscii ' ' Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Char -> Put
putAscii ':' Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Char -> Put
putAscii '+' Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Char -> Put
putAscii ' ' Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>
Int -> a -> Put
forall a. Show a => Int -> a -> Put
showpPrec 7 a
b
instance Show a => Show (Maybe a) where
showpPrec :: Int -> Maybe a -> Put
showpPrec _ Nothing = [Char] -> Put
putAsciiStr "Nothing"
showpPrec k :: Int
k (Just a :: a
a) = Bool -> Put -> Put
showpParen (Int
k Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
> 10) (Put -> Put) -> Put -> Put
forall a b. (a -> b) -> a -> b
$ [Char] -> Put
putAsciiStr "Just " Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Int -> a -> Put
forall a. Show a => Int -> a -> Put
showpPrec 11 a
a
instance (Show a, Show b) => Show (Either a b) where
showpPrec :: Int -> Either a b -> Put
showpPrec k :: Int
k (Left a :: a
a) = Bool -> Put -> Put
showpParen (Int
k Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
> 10) (Put -> Put) -> Put -> Put
forall a b. (a -> b) -> a -> b
$ [Char] -> Put
putAsciiStr "Left " Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Int -> a -> Put
forall a. Show a => Int -> a -> Put
showpPrec 11 a
a
showpPrec k :: Int
k (Right b :: b
b) = Bool -> Put -> Put
showpParen (Int
k Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
> 10) (Put -> Put) -> Put -> Put
forall a b. (a -> b) -> a -> b
$ [Char] -> Put
putAsciiStr "Right " Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Int -> b -> Put
forall a. Show a => Int -> a -> Put
showpPrec 11 b
b
instance Show Ordering where
showp :: Ordering -> Put
showp LT = Char -> Put
putAscii 'L' Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Char -> Put
putAscii 'T'
showp EQ = Char -> Put
putAscii 'E' Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Char -> Put
putAscii 'Q'
showp GT = Char -> Put
putAscii 'G' Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Char -> Put
putAscii 'T'
instance (Show a, Show b) => Show (a,b) where
showp :: (a, b) -> Put
showp (a :: a
a,b :: b
b) = Char -> Put
putAscii '(' Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> a -> Put
forall a. Show a => a -> Put
showp a
a Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Char -> Put
putAscii ',' Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> b -> Put
forall a. Show a => a -> Put
showp b
b Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Char -> Put
putAscii ')'
instance (Show a, Show b, Show c) => Show (a,b,c) where
showp :: (a, b, c) -> Put
showp (a :: a
a,b :: b
b,c :: c
c) = Char -> Put
putAscii '(' Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> a -> Put
forall a. Show a => a -> Put
showp a
a Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>
Char -> Put
putAscii ',' Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> b -> Put
forall a. Show a => a -> Put
showp b
b Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>
Char -> Put
putAscii ',' Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> c -> Put
forall a. Show a => a -> Put
showp c
c Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>
Char -> Put
putAscii ')'
instance (Show a, Show b, Show c, Show d) => Show (a,b,c,d) where
showp :: (a, b, c, d) -> Put
showp (a :: a
a,b :: b
b,c :: c
c,d :: d
d) =
Char -> Put
putAscii '(' Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> a -> Put
forall a. Show a => a -> Put
showp a
a Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>
Char -> Put
putAscii ',' Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> b -> Put
forall a. Show a => a -> Put
showp b
b Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>
Char -> Put
putAscii ',' Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> c -> Put
forall a. Show a => a -> Put
showp c
c Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>
Char -> Put
putAscii ',' Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> d -> Put
forall a. Show a => a -> Put
showp d
d Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>
Char -> Put
putAscii ')'
instance (Show a, Show b, Show c, Show d, Show e) => Show (a,b,c,d,e) where
showp :: (a, b, c, d, e) -> Put
showp (a :: a
a,b :: b
b,c :: c
c,d :: d
d,e :: e
e) =
Char -> Put
putAscii '(' Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> a -> Put
forall a. Show a => a -> Put
showp a
a Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>
Char -> Put
putAscii ',' Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> b -> Put
forall a. Show a => a -> Put
showp b
b Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>
Char -> Put
putAscii ',' Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> c -> Put
forall a. Show a => a -> Put
showp c
c Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>
Char -> Put
putAscii ',' Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> d -> Put
forall a. Show a => a -> Put
showp d
d Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>
Char -> Put
putAscii ',' Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> e -> Put
forall a. Show a => a -> Put
showp e
e Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>
Char -> Put
putAscii ')'
instance (Show a, Show b, Show c, Show d, Show e, Show f) => Show (a,b,c,d,e,f) where
showp :: (a, b, c, d, e, f) -> Put
showp (a :: a
a,b :: b
b,c :: c
c,d :: d
d,e :: e
e,f :: f
f) =
Char -> Put
putAscii '(' Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> a -> Put
forall a. Show a => a -> Put
showp a
a Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>
Char -> Put
putAscii ',' Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> b -> Put
forall a. Show a => a -> Put
showp b
b Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>
Char -> Put
putAscii ',' Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> c -> Put
forall a. Show a => a -> Put
showp c
c Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>
Char -> Put
putAscii ',' Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> d -> Put
forall a. Show a => a -> Put
showp d
d Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>
Char -> Put
putAscii ',' Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> e -> Put
forall a. Show a => a -> Put
showp e
e Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>
Char -> Put
putAscii ',' Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> f -> Put
forall a. Show a => a -> Put
showp f
f Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>
Char -> Put
putAscii ')'
instance (Show a, Show b, Show c, Show d, Show e, Show f, Show g) => Show (a,b,c,d,e,f,g) where
showp :: (a, b, c, d, e, f, g) -> Put
showp (a :: a
a,b :: b
b,c :: c
c,d :: d
d,e :: e
e,f :: f
f,g :: g
g) =
Char -> Put
putAscii '(' Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> a -> Put
forall a. Show a => a -> Put
showp a
a Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>
Char -> Put
putAscii ',' Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> b -> Put
forall a. Show a => a -> Put
showp b
b Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>
Char -> Put
putAscii ',' Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> c -> Put
forall a. Show a => a -> Put
showp c
c Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>
Char -> Put
putAscii ',' Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> d -> Put
forall a. Show a => a -> Put
showp d
d Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>
Char -> Put
putAscii ',' Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> e -> Put
forall a. Show a => a -> Put
showp e
e Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>
Char -> Put
putAscii ',' Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> f -> Put
forall a. Show a => a -> Put
showp f
f Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>
Char -> Put
putAscii ',' Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> g -> Put
forall a. Show a => a -> Put
showp g
g Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>
Char -> Put
putAscii ')'
instance (Show i, Show e, Ix i) => Show (Array i e) where
showpPrec :: Int -> Array i e -> Put
showpPrec k :: Int
k a :: Array i e
a = Bool -> Put -> Put
showpParen (Int
k Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
> 10) (Put -> Put) -> Put -> Put
forall a b. (a -> b) -> a -> b
$ [Char] -> Put
putAsciiStr "array " Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>
(i, i) -> Put
forall a. Show a => a -> Put
showp (Array i e -> (i, i)
forall i e. Array i e -> (i, i)
bounds Array i e
a) Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Char -> Put
putAscii ' ' Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> [(i, e)] -> Put
forall a. Show a => a -> Put
showp (Array i e -> [(i, e)]
forall i e. Ix i => Array i e -> [(i, e)]
assocs Array i e
a)
instance (Show k, Show v) => Show (M.Map k v) where
showpPrec :: Int -> Map k v -> Put
showpPrec k :: Int
k m :: Map k v
m = Bool -> Put -> Put
showpParen (Int
k Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
> 10) (Put -> Put) -> Put -> Put
forall a b. (a -> b) -> a -> b
$ [Char] -> Put
putAsciiStr "fromList " Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>
[(k, v)] -> Put
forall a. Show a => a -> Put
showp (Map k v -> [(k, v)]
forall k a. Map k a -> [(k, a)]
M.toList Map k v
m)
instance (Show e) => Show (S.Set e) where
showpPrec :: Int -> Set e -> Put
showpPrec k :: Int
k s :: Set e
s = Bool -> Put -> Put
showpParen (Int
k Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
> 10) (Put -> Put) -> Put -> Put
forall a b. (a -> b) -> a -> b
$ [Char] -> Put
putAsciiStr "fromList " Put -> Put -> Put
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>
[e] -> Put
forall a. Show a => a -> Put
showp (Set e -> [e]
forall a. Set a -> [a]
S.toList Set e
s)