1 module Scaffolding(readLines, openFile) where 2 3 import qualified IO 4 5 readLines fhandle acc = 6 do s <- sreadLine fhandle 7 case s of 8 Just s -> do readLines fhandle (s:acc) 9 Nothing -> do return (reverse acc) 10 11 sreadLine fhandle = 12 catch (do l <- IO.hGetLine fhandle 13 return (Just l)) 14 (readErrHandler fhandle) 15 16 readErrHandler fhandle err = do IO.hClose fhandle ; return Nothing 17 18 openFile fileName = 19 catch (do fh <- IO.openFile fileName IO.ReadMode 20 return (Just fh)) 21 (openErrHandler fileName) 22 23 openErrHandler fileName err = do putStrLn $ show err ; return Nothing