{-# LANGUAGE MonoLocalBinds #-} {-# LANGUAGE FlexibleInstances, UndecidableInstances #-} {-# OPTIONS_GHC -Wall -fno-warn-tabs #-} module Text.Show.ToolsYj (ShowIO(..), printIO) where class ShowIO a where showIO :: a -> IO String instance {-# OVERLAPPABLE #-} Show a => ShowIO a where showIO :: a -> IO String showIO = String -> IO String forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure (String -> IO String) -> (a -> String) -> a -> IO String forall b c a. (b -> c) -> (a -> b) -> a -> c . a -> String forall a. Show a => a -> String show printIO :: ShowIO a => a -> IO () printIO :: forall a. ShowIO a => a -> IO () printIO = (String -> IO () putStrLn (String -> IO ()) -> IO String -> IO () forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b =<<) (IO String -> IO ()) -> (a -> IO String) -> a -> IO () forall b c a. (b -> c) -> (a -> b) -> a -> c . a -> IO String forall a. ShowIO a => a -> IO String showIO