packages feed

phatsort-0.6.0.0: src/PhatSort/Monad/Stdio.hs

------------------------------------------------------------------------------
-- |
-- Module      : PhatSort.Monad.Stdio
-- Description : standard I/O
-- Copyright   : Copyright (c) 2019-2023 Travis Cardwell
-- License     : MIT
------------------------------------------------------------------------------

module PhatSort.Monad.Stdio
  ( -- * MonadStdio
    MonadStdio(..)
  ) where

-- https://hackage.haskell.org/package/base
import qualified Prelude
import Prelude hiding (putStrLn)

-- https://hackage.haskell.org/package/transformers
import Control.Monad.Trans.Class (MonadTrans(lift))
import Control.Monad.Trans.Except (ExceptT)

------------------------------------------------------------------------------
-- $MonadStdio

-- | Standard I/O
--
-- @since 0.5.0.0
class Monad m => MonadStdio m where
  -- | Write a 'String' to @STDOUT@, appending a newline
  putStrLn :: String -> m ()

instance MonadStdio IO where
  putStrLn = Prelude.putStrLn
  {-# INLINE putStrLn #-}

instance MonadStdio m => MonadStdio (ExceptT e m) where
  putStrLn = lift . putStrLn
  {-# INLINE putStrLn #-}