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