______________
[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 :: *W
9 :: Void = Void
10 :: Filemode = Lees | Schrijf
11 :: Filenaam :== String
12 :: Filehandle
13
14 // voer monadische I/O actie uit op de wereld:
15 doIO:: (IO a) *World -> *(a, *W)
16
17 // IO is een monad:
18 instance return IO
19 instance >>= IO
20
21 // lees regel van de console:
22 read :: IO String
23
24 // schrijf regel naar de console:
25 write :: String -> IO Void
26
27 // open de file met gegeven filenaam en mode:
28 //open :: Filenaam Filemode -> IO (Maybe Filehandle)
29
30 // sluit de file met gegeven filenaam:
31 //close :: Filehandle -> IO Bool
32 //
33 //// bepaal of het lezen van de file klaar is:
34 //eof :: Filehandle -> IO Bool
35 //
36 //// lees een regel van een file:
37 //readline :: Filehandle -> IO (Maybe String)
38 //
39 //// schrijf een regel naar een file:
40 //writeline :: String Filehandle -> IO Bool