From 307ecd7d6ae04804536f7843dcc369c19c772bf7 Mon Sep 17 00:00:00 2001 From: Moritz Kiefer Date: Wed, 3 May 2017 11:01:19 +0200 Subject: [PATCH] Add hPutStr and hPutStrLn (#52) --- Symbols.md | 2 ++ src/Show.hs | 27 +++++++++++++++++---------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/Symbols.md b/Symbols.md index 981aa8dba..28620fe6e 100644 --- a/Symbols.md +++ b/Symbols.md @@ -525,6 +525,8 @@ * head * headDef * headMay +* hPutStr +* hPutStrLn * identity * ifM * imagPart diff --git a/src/Show.hs b/src/Show.hs index 94dc2cb18..4b3bdd192 100644 --- a/src/Show.hs +++ b/src/Show.hs @@ -14,6 +14,7 @@ module Show ( ) where import qualified Base +import qualified System.IO as Base import Data.Function ((.)) import Control.Monad.IO.Class (MonadIO, liftIO) @@ -26,30 +27,36 @@ import qualified Data.Text.IO as T import qualified Data.Text.Lazy as TL import qualified Data.Text.Lazy.IO as TL +import System.IO (Handle, stdout) + class Print a where + hPutStr :: MonadIO m => Handle -> a -> m () putStr :: MonadIO m => a -> m () + putStr = hPutStr stdout + hPutStrLn :: MonadIO m => Handle -> a -> m () putStrLn :: MonadIO m => a -> m () + putStrLn = hPutStrLn stdout instance Print T.Text where - putStr = liftIO . T.putStr - putStrLn = liftIO . T.putStrLn + hPutStr = \h -> liftIO . T.hPutStr h + hPutStrLn = \h -> liftIO . T.hPutStrLn h instance Print TL.Text where - putStr = liftIO . TL.putStr - putStrLn = liftIO . TL.putStrLn + hPutStr = \h -> liftIO . TL.hPutStr h + hPutStrLn = \h -> liftIO . TL.hPutStrLn h instance Print BS.ByteString where - putStr = liftIO . BS.putStr - putStrLn = liftIO . BS.putStrLn + hPutStr = \h -> liftIO . BS.hPutStr h + hPutStrLn = \h -> liftIO . BS.hPutStrLn h instance Print BL.ByteString where - putStr = liftIO . BL.putStr - putStrLn = liftIO . BL.putStrLn + hPutStr = \h -> liftIO . BL.hPutStr h + hPutStrLn = \h -> liftIO . BL.hPutStrLn h instance Print [Base.Char] where - putStr = liftIO . Base.putStr - putStrLn = liftIO . Base.putStrLn + hPutStr = \h -> liftIO . Base.hPutStr h + hPutStrLn = \h -> liftIO . Base.hPutStrLn h -- For forcing type inference putText :: MonadIO m => T.Text -> m ()