{-# LANGUAGE CPP #-}
{-# LANGUAGE OverloadedStrings #-}
#if __GLASGOW_HASKELL__ >= 706
{-# LANGUAGE PolyKinds #-}
#endif
{-# OPTIONS -fno-warn-orphans #-}
{-|
Module: TextShow.Data.Tagged
Copyright: (C) 2014-2015 Ryan Scott
License: BSD-style (see the file LICENSE)
Maintainer: Ryan Scott
Stability: Provisional
Portability: GHC
Monomorphic 'TextShow' function for 'Tagged' values.
/Since: 2/
-}
module TextShow.Data.Tagged (liftShowbTaggedPrec) where
import Data.Tagged (Tagged(..))
import TextShow (TextShow(..), TextShow1(..), TextShow2(..),
Builder, showbPrec1, showbUnaryWith)
#include "inline.h"
-- | Convert a 'Tagged' value to a 'Builder' with the given show function and precedence.
--
-- /Since: 3/
liftShowbTaggedPrec :: (Int -> b -> Builder) -> Int -> Tagged s b -> Builder
liftShowbTaggedPrec sp p (Tagged b) = showbUnaryWith sp "Tagged" p b
{-# INLINE liftShowbTaggedPrec #-}
instance TextShow b => TextShow (Tagged s b) where
showbPrec = showbPrec1
INLINE_INST_FUN(showbPrec)
instance TextShow1 (Tagged s) where
liftShowbPrec sp _ = liftShowbTaggedPrec sp
INLINE_INST_FUN(liftShowbPrec)
instance TextShow2 Tagged where
liftShowbPrec2 _ _ sp _ = liftShowbTaggedPrec sp
INLINE_INST_FUN(liftShowbPrec2)