module ShowFun where

import Data.Typeable

instance (Typeable a, Typeable b) => Show (a -> b) where
    show :: (a -> b) -> String
show e :: a -> b
e = '<' Char -> ShowS
forall a. a -> [a] -> [a]
: (TypeRep -> String
forall a. Show a => a -> String
show (TypeRep -> String) -> ((a -> b) -> TypeRep) -> (a -> b) -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> b) -> TypeRep
forall a. Typeable a => a -> TypeRep
typeOf) a -> b
e String -> ShowS
forall a. [a] -> [a] -> [a]
++ ">"

instance Typeable a => Show (IO a) where
    show :: IO a -> String
show e :: IO a
e = '<' Char -> ShowS
forall a. a -> [a] -> [a]
: (TypeRep -> String
forall a. Show a => a -> String
show (TypeRep -> String) -> (IO a -> TypeRep) -> IO a -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. IO a -> TypeRep
forall a. Typeable a => a -> TypeRep
typeOf) IO a
e String -> ShowS
forall a. [a] -> [a] -> [a]
++ ">"