module Control.Eff.Concurrent.Misc
( showSTypeRepPrec
, showSTypeRep
, showSTypeable
, showSPrecTypeable
)
where
import Data.Dynamic
import Data.Typeable ()
import Type.Reflection
showSTypeable :: forall message . Typeable message => ShowS
showSTypeable = showSTypeRep (SomeTypeRep (typeRep @message))
showSPrecTypeable :: forall message . Typeable message => Int -> ShowS
showSPrecTypeable d = showSTypeRepPrec d (SomeTypeRep (typeRep @message))
showSTypeRep :: SomeTypeRep -> ShowS
showSTypeRep = showSTypeRepPrec 0
showSTypeRepPrec :: Int -> SomeTypeRep -> ShowS
showSTypeRepPrec d (SomeTypeRep tr) sIn =
let (con, conArgs) = splitApps tr
in case conArgs of
[] -> showString (tyConName con) sIn
_ ->
showParen
(d >= 10)
(showString (tyConName con) . showChar ':' .
foldr1 (\f acc -> showChar '-' . f . acc)
(showSTypeRepPrec 10 <$> conArgs))
sIn