{-# LANGUAGE OverloadedStrings #-}
{-# OPTIONS_GHC -fno-warn-orphans -fno-warn-warnings-deprecations #-}
module TextShow.Control.Monad.Trans () where
import Control.Monad.Trans.Error (ErrorT(..))
import Control.Monad.Trans.Except (ExceptT(..))
import Control.Monad.Trans.Identity (IdentityT(..))
import Control.Monad.Trans.List (ListT(..))
import Control.Monad.Trans.Maybe (MaybeT(..))
import qualified Control.Monad.Trans.Writer.Lazy as WL (WriterT(..))
import qualified Control.Monad.Trans.Writer.Strict as WS (WriterT(..))
import TextShow (TextShow(..), TextShow1(..), TextShow2(..),
Builder, showbPrec1, showbUnaryWith)
import TextShow.Utils (liftShowbUnaryWith)
liftMShowbUnaryWith :: (TextShow1 m, TextShow1 f)
=> (Int -> a -> Builder) -> ([a] -> Builder)
-> Builder -> Int -> m (f a) -> Builder
liftMShowbUnaryWith sp sl name p m =
showbUnaryWith (liftShowbPrec (liftShowbPrec sp sl)
(liftShowbList sp sl)) name p m
{-# INLINE liftMShowbUnaryWith #-}
liftShowbWriterTPrec :: (TextShow1 m, TextShow w)
=> (Int -> a -> Builder) -> ([a] -> Builder)
-> Int -> m (a, w) -> Builder
liftShowbWriterTPrec sp sl p m =
showbUnaryWith (liftShowbPrec (liftShowbPrec2 sp sl showbPrec showbList)
(liftShowbList2 sp sl showbPrec showbList))
"WriterT" p m
{-# INLINE liftShowbWriterTPrec #-}
instance (TextShow e, TextShow1 m, TextShow a) => TextShow (ErrorT e m a) where
showbPrec = showbPrec1
{-# INLINE showbPrec #-}
instance (TextShow e, TextShow1 m) => TextShow1 (ErrorT e m) where
liftShowbPrec sp sl p (ErrorT m) = liftMShowbUnaryWith sp sl "ErrorT" p m
{-# INLINE liftShowbPrec #-}
instance (TextShow e, TextShow1 m, TextShow a) => TextShow (ExceptT e m a) where
showbPrec = showbPrec1
{-# INLINE showbPrec #-}
instance (TextShow e, TextShow1 m) => TextShow1 (ExceptT e m) where
liftShowbPrec sp sl p (ExceptT m) = liftMShowbUnaryWith sp sl "ExceptT" p m
{-# INLINE liftShowbPrec #-}
instance (TextShow1 f, TextShow a) => TextShow (IdentityT f a) where
showbPrec = showbPrec1
{-# INLINE showbPrec #-}
instance TextShow1 f => TextShow1 (IdentityT f) where
liftShowbPrec sp sl p (IdentityT m) = liftShowbUnaryWith sp sl "IdentityT" p m
{-# INLINE liftShowbPrec #-}
instance (TextShow1 m, TextShow a) => TextShow (ListT m a) where
showbPrec = showbPrec1
{-# INLINE showbPrec #-}
instance TextShow1 m => TextShow1 (ListT m) where
liftShowbPrec sp sl p (ListT m) = liftMShowbUnaryWith sp sl "ListT" p m
{-# INLINE liftShowbPrec #-}
instance (TextShow1 m, TextShow a) => TextShow (MaybeT m a) where
showbPrec = showbPrec1
{-# INLINE showbPrec #-}
instance TextShow1 m => TextShow1 (MaybeT m) where
liftShowbPrec sp sl p (MaybeT m) = liftMShowbUnaryWith sp sl "MaybeT" p m
{-# INLINE liftShowbPrec #-}
instance (TextShow w, TextShow1 m, TextShow a) => TextShow (WL.WriterT w m a) where
showbPrec = showbPrec1
{-# INLINE showbPrec #-}
instance (TextShow w, TextShow1 m) => TextShow1 (WL.WriterT w m) where
liftShowbPrec sp sl p (WL.WriterT m) = liftShowbWriterTPrec sp sl p m
{-# INLINE liftShowbPrec #-}
instance (TextShow w, TextShow1 m, TextShow a) => TextShow (WS.WriterT w m a) where
showbPrec = showbPrec1
{-# INLINE showbPrec #-}
instance (TextShow w, TextShow1 m) => TextShow1 (WS.WriterT w m) where
liftShowbPrec sp sl p (WS.WriterT m) = liftShowbWriterTPrec sp sl p m
{-# INLINE liftShowbPrec #-}