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
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
instance (TextShow e, TextShow1 m, TextShow a) => TextShow (ErrorT e m a) where
showbPrec = showbPrec1
instance (TextShow e, TextShow1 m) => TextShow1 (ErrorT e m) where
liftShowbPrec sp sl p (ErrorT m) = liftMShowbUnaryWith sp sl "ErrorT" p m
instance (TextShow e, TextShow1 m, TextShow a) => TextShow (ExceptT e m a) where
showbPrec = showbPrec1
instance (TextShow e, TextShow1 m) => TextShow1 (ExceptT e m) where
liftShowbPrec sp sl p (ExceptT m) = liftMShowbUnaryWith sp sl "ExceptT" p m
instance (TextShow1 f, TextShow a) => TextShow (IdentityT f a) where
showbPrec = showbPrec1
instance TextShow1 f => TextShow1 (IdentityT f) where
liftShowbPrec sp sl p (IdentityT m) = liftShowbUnaryWith sp sl "IdentityT" p m
instance (TextShow1 m, TextShow a) => TextShow (ListT m a) where
showbPrec = showbPrec1
instance TextShow1 m => TextShow1 (ListT m) where
liftShowbPrec sp sl p (ListT m) = liftMShowbUnaryWith sp sl "ListT" p m
instance (TextShow1 m, TextShow a) => TextShow (MaybeT m a) where
showbPrec = showbPrec1
instance TextShow1 m => TextShow1 (MaybeT m) where
liftShowbPrec sp sl p (MaybeT m) = liftMShowbUnaryWith sp sl "MaybeT" p m
instance (TextShow w, TextShow1 m, TextShow a) => TextShow (WL.WriterT w m a) where
showbPrec = showbPrec1
instance (TextShow w, TextShow1 m) => TextShow1 (WL.WriterT w m) where
liftShowbPrec sp sl p (WL.WriterT m) = liftShowbWriterTPrec sp sl p m
instance (TextShow w, TextShow1 m, TextShow a) => TextShow (WS.WriterT w m a) where
showbPrec = showbPrec1
instance (TextShow w, TextShow1 m) => TextShow1 (WS.WriterT w m) where
liftShowbPrec sp sl p (WS.WriterT m) = liftShowbWriterTPrec sp sl p m