{-# LANGUAGE TemplateHaskell #-}
{-# OPTIONS_GHC -Wno-orphans #-}
module TextShow.Data.Vector () where
import qualified Data.Vector as B (Vector)
import Data.Vector.Fusion.Bundle.Size (Size)
import qualified Data.Vector.Generic as G (Vector)
import Data.Vector.Generic (toList)
import qualified Data.Vector.Primitive as P (Vector)
import Data.Vector.Primitive (Prim)
import qualified Data.Vector.Storable as S (Vector)
import qualified Data.Vector.Unboxed as U (Vector)
import Data.Vector.Unboxed (Unbox)
import Foreign.Storable (Storable)
import TextShow (TextShow(..), TextShow1(..), Builder)
import TextShow.TH (deriveTextShow)
showbVectorGenericPrec :: (G.Vector v a, TextShow a) => v a -> Builder
showbVectorGenericPrec :: forall (v :: * -> *) a. (Vector v a, TextShow a) => v a -> Builder
showbVectorGenericPrec = forall a. TextShow a => [a] -> Builder
showbList forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (v :: * -> *) a. Vector v a => v a -> [a]
toList
{-# INLINE showbVectorGenericPrec #-}
liftShowbVectorGenericPrec :: G.Vector v a => ([a] -> Builder) -> v a -> Builder
liftShowbVectorGenericPrec :: forall (v :: * -> *) a.
Vector v a =>
([a] -> Builder) -> v a -> Builder
liftShowbVectorGenericPrec [a] -> Builder
sl = [a] -> Builder
sl forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (v :: * -> *) a. Vector v a => v a -> [a]
toList
{-# INLINE liftShowbVectorGenericPrec #-}
instance TextShow a => TextShow (B.Vector a) where
showbPrec :: Int -> Vector a -> Builder
showbPrec Int
_ = forall (v :: * -> *) a. (Vector v a, TextShow a) => v a -> Builder
showbVectorGenericPrec
{-# INLINE showbPrec #-}
instance TextShow1 B.Vector where
liftShowbPrec :: forall a.
(Int -> a -> Builder)
-> ([a] -> Builder) -> Int -> Vector a -> Builder
liftShowbPrec Int -> a -> Builder
_ [a] -> Builder
sl Int
_ = forall (v :: * -> *) a.
Vector v a =>
([a] -> Builder) -> v a -> Builder
liftShowbVectorGenericPrec [a] -> Builder
sl
{-# INLINE liftShowbPrec #-}
instance (TextShow a, Prim a) => TextShow (P.Vector a) where
showbPrec :: Int -> Vector a -> Builder
showbPrec Int
_ = forall (v :: * -> *) a. (Vector v a, TextShow a) => v a -> Builder
showbVectorGenericPrec
{-# INLINE showbPrec #-}
instance (TextShow a, Storable a) => TextShow (S.Vector a) where
showbPrec :: Int -> Vector a -> Builder
showbPrec Int
_ = forall (v :: * -> *) a. (Vector v a, TextShow a) => v a -> Builder
showbVectorGenericPrec
{-# INLINE showbPrec #-}
instance (TextShow a, Unbox a) => TextShow (U.Vector a) where
showbPrec :: Int -> Vector a -> Builder
showbPrec Int
_ = forall (v :: * -> *) a. (Vector v a, TextShow a) => v a -> Builder
showbVectorGenericPrec
{-# INLINE showbPrec #-}
$(deriveTextShow ''Size)