rare shit
[fp1415.git] / fp2 / week2 / mart / StdIOMonad.dcl
1 definition module StdIOMonad
2
3 // Deze module verpakt een aantal StdFile functies in een monadische jas
4
5 import StdMonad, StdMaybeMonad
6
7 :: IO a
8 :: Void = Void
9 :: Filemode = Lees | Schrijf
10 :: Filenaam :== String
11 :: Filehandle
12
13 // voer monadische I/O actie uit op de wereld:
14 //doIO :: (IO a) *World -> (a,*World)
15
16 // IO is een monad:
17 //instance return IO
18 //instance >>= IO
19 //
20 //// lees regel van de console:
21 //read :: IO String
22 //
23 //// schrijf regel naar de console:
24 //write :: String -> IO Void
25 //
26 //// open de file met gegeven filenaam en mode:
27 //open :: Filenaam Filemode -> IO (Maybe Filehandle)
28 //
29 //// sluit de file met gegeven filenaam:
30 //close :: Filehandle -> IO Bool
31 //
32 //// bepaal of het lezen van de file klaar is:
33 //eof :: Filehandle -> IO Bool
34 //
35 //// lees een regel van een file:
36 //readline :: Filehandle -> IO (Maybe String)
37 //
38 //// schrijf een regel naar een file:
39 //writeline :: String Filehandle -> IO Bool