blob: acd62c21f7250ca8cf3d2358d1d042db45e8483e (
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
|
module ToonFileMonad
import StdArray, StdInt, StdString // expliciete imports van StdEnv om name-clash met StdFunc en StdIOMonad te voorkomen
import StdIOMonad
import StdMaybeMonad
Start :: *World -> (Void,*World)
Start world = doIO toon world
toon :: IO Void
toon = write "Voer een filenaam in: " >>= \_ ->
read >>= \filenaam ->
open (filenaam%(0,size filenaam-2)) Lees >>= \misschien_filehandle ->
case misschien_filehandle of
Nothing
= write ("Kon " +++ filenaam +++ " niet openen.\n") >>= \_ ->
return Void
Just filehandle
= toon_inhoud filehandle
toon_inhoud :: Filehandle -> IO Void
toon_inhoud filehandle
= eof filehandle >>= \einde ->
if einde
(return Void)
(readline filehandle >>= \misschien_regel ->
case misschien_regel of
Nothing = return Void
Just regel = write regel >>= \_ -> toon_inhoud filehandle
)
|