summaryrefslogtreecommitdiff
path: root/fp2/week2/camil/StdIOMonad.dcl
diff options
context:
space:
mode:
authorCamil Staps2015-04-24 18:46:45 +0200
committerCamil Staps2015-04-24 18:46:45 +0200
commit17c7f3846314f828084e228a6cb5ddf5bb5549e2 (patch)
treea82ee0cc120e1c26c5dcb61d52f4304331d77865 /fp2/week2/camil/StdIOMonad.dcl
parent ______________ (diff)
IT WORKS =====D
Diffstat (limited to 'fp2/week2/camil/StdIOMonad.dcl')
-rw-r--r--fp2/week2/camil/StdIOMonad.dcl40
1 files changed, 40 insertions, 0 deletions
diff --git a/fp2/week2/camil/StdIOMonad.dcl b/fp2/week2/camil/StdIOMonad.dcl
new file mode 100644
index 0000000..a23a328
--- /dev/null
+++ b/fp2/week2/camil/StdIOMonad.dcl
@@ -0,0 +1,40 @@
+definition module StdIOMonad
+
+// Deze module verpakt een aantal StdFile functies in een monadische jas
+
+import StdMonad
+
+:: IO a
+:: *W
+:: Void = Void
+:: Filemode = Lees | Schrijf
+:: Filenaam :== String
+:: Filehandle
+
+// voer monadische I/O actie uit op de wereld:
+doIO:: (IO a) *World -> *(a, *W)
+
+// IO is een monad:
+instance return IO
+instance >>= IO
+
+// lees regel van de console:
+read :: IO String
+
+// schrijf regel naar de console:
+write :: String -> IO Void
+
+// open de file met gegeven filenaam en mode:
+//open :: Filenaam Filemode -> IO (Maybe Filehandle)
+
+// sluit de file met gegeven filenaam:
+//close :: Filehandle -> IO Bool
+//
+//// bepaal of het lezen van de file klaar is:
+//eof :: Filehandle -> IO Bool
+//
+//// lees een regel van een file:
+//readline :: Filehandle -> IO (Maybe String)
+//
+//// schrijf een regel naar een file:
+//writeline :: String Filehandle -> IO Bool