From a7d7542dc646a5fd124ef71e71ce260889f1701b Mon Sep 17 00:00:00 2001 From: Camil Staps Date: Tue, 2 Feb 2016 19:24:50 +0100 Subject: Moved to 1415 directory --- 1415/fp2/week2/camil/StdIOMonad.dcl | 40 +++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 1415/fp2/week2/camil/StdIOMonad.dcl (limited to '1415/fp2/week2/camil/StdIOMonad.dcl') diff --git a/1415/fp2/week2/camil/StdIOMonad.dcl b/1415/fp2/week2/camil/StdIOMonad.dcl new file mode 100644 index 0000000..580efaa --- /dev/null +++ b/1415/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, StdMaybe + +:: IO a +:: *W +:: Void = Void +:: Filemode = Lees | Schrijf +:: Filenaam :== String +:: Filehandle :== String + +// 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 -- cgit v1.2.3