summaryrefslogtreecommitdiff
path: root/files/practicum/StdIOMonad.dcl
blob: a37a9798e1e59fea120d9856e29c10f7da719de1 (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
definition module StdIOMonad

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

import StdMonad, StdMaybeMonad

:: IO a
:: Void       = Void
:: Filemode   = Lees | Schrijf
:: Filenaam :== String
:: Filehandle

//	voer monadische I/O actie uit op de wereld:
doIO		:: (IO a) *World -> (a,*World)

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