aboutsummaryrefslogtreecommitdiff
path: root/ch15/MonadHandle.hs
blob: 209728db1aeab449fc2d49315416fe540b04256d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{-- snippet MonadHandle --}
{-# LANGUAGE FunctionalDependencies, MultiParamTypeClasses #-}

module MonadHandle (MonadHandle(..)) where

import System.IO (IOMode(..))

class Monad m => MonadHandle h m | m -> h where
    openFile :: FilePath -> IOMode -> m h
    hPutStr :: h -> String -> m ()
    hClose :: h -> m ()
    hGetContents :: h -> m String

    hPutStrLn :: h -> String -> m ()
    hPutStrLn h s = hPutStr h s >> hPutStr h "\n"
{-- /snippet MonadHandle --}