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 )