{-# LANGUAGE Haskell2010 , TypeSynonymInstances , FlexibleInstances , UndecidableInstances , OverlappingInstances #-} {-# OPTIONS -Wall #-} -- | -- Module : Foreign.Java.IO -- Copyright : (c) Julian Fleischer 2013 -- License : MIT (See LICENSE file in cabal package) -- -- Maintainer : julian.fleischer@fu-berlin.de -- Stability : provisional -- Portability : non-portable (UndecidableInstances, OverlappingInstances) -- -- Utilities to ease IO operations in the Java monad. module Foreign.Java.IO where import Prelude hiding (print) import Control.Monad.IO.Class import System.IO hiding (print) class PrintLn a where -- | Like @'putStrLn' . 'show'@, but with a specialized -- version for Strings plus it can be used within any -- 'MonadIO' monad (such as IO and Java). println :: MonadIO m => a -> m () -- | Like @'putStr' . 'show'@, but with a specialized -- version for Strings plus it can be used within any -- 'MonadIO' monad (such as IO and Java). print :: MonadIO m => a -> m () instance PrintLn String where println = liftIO . putStrLn print x = liftIO (putStr x >> hFlush stdout) instance Show a => PrintLn a where println = println . show print = print . show