summaryrefslogblamecommitdiff
path: root/fp2/week2/mart/StdIOMonad.dcl
blob: 580efaa6805edda0dbb9105620d975039e58c566 (plain) (tree)
1
2
3
4
5
6
7
8


                                                                              
                          
        
      

                               
                         
                                                    
                                 
                     








                                                   
                                                              
                                            








                                                   
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