aboutsummaryrefslogtreecommitdiff
path: root/ch15/MonadHandle.hs
diff options
context:
space:
mode:
Diffstat (limited to 'ch15/MonadHandle.hs')
-rw-r--r--ch15/MonadHandle.hs16
1 files changed, 16 insertions, 0 deletions
diff --git a/ch15/MonadHandle.hs b/ch15/MonadHandle.hs
new file mode 100644
index 0000000..209728d
--- /dev/null
+++ b/ch15/MonadHandle.hs
@@ -0,0 +1,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 --}