module TextShow.Data.Typeable.Utils (showbArgs, showbTuple) where
import Data.Text.Lazy.Builder (Builder, singleton)
import Prelude ()
import Prelude.Compat
import TextShow.Classes (TextShow(..))
showbArgs :: TextShow a => Builder -> [a] -> Builder
showbArgs :: Builder -> [a] -> Builder
showbArgs _ [] = Builder
forall a. Monoid a => a
mempty
showbArgs _ [a :: a
a] = Int -> a -> Builder
forall a. TextShow a => Int -> a -> Builder
showbPrec 10 a
a
showbArgs sep :: Builder
sep (a :: a
a:as :: [a]
as) = Int -> a -> Builder
forall a. TextShow a => Int -> a -> Builder
showbPrec 10 a
a Builder -> Builder -> Builder
forall a. Semigroup a => a -> a -> a
<> Builder
sep Builder -> Builder -> Builder
forall a. Semigroup a => a -> a -> a
<> Builder -> [a] -> Builder
forall a. TextShow a => Builder -> [a] -> Builder
showbArgs Builder
sep [a]
as
showbTuple :: TextShow a => [a] -> Builder
showbTuple :: [a] -> Builder
showbTuple args :: [a]
args = Char -> Builder
singleton '(' Builder -> Builder -> Builder
forall a. Semigroup a => a -> a -> a
<> Builder -> [a] -> Builder
forall a. TextShow a => Builder -> [a] -> Builder
showbArgs (Char -> Builder
singleton ',') [a]
args Builder -> Builder -> Builder
forall a. Semigroup a => a -> a -> a
<> Char -> Builder
singleton ')'
{-# INLINE showbTuple #-}