summaryrefslogtreecommitdiff
path: root/fp2/week2/mart/StdIOMonad.dcl
blob: 0801928559d3e1edf561e39b01b217f100f02eb3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
definition module StdIOMonad

//	Deze module verpakt een aantal StdFile functies in een monadische jas

import StdMonad, StdMaybeMonad

:: 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