withReader :: String -> (Reader -> IO a) -> IO a
withReader path f = do
  reader <- openReader path
  a <- f reader
  closeReader reader
  return a
withReader :: String -> (Reader -> IO a) -> IO a
withReader path f = do
  reader <- openReader path
  a <- f reader
  closeReader reader
  return a
withReader path f = do
  reader <- openReader path
  a <- f reader
  closeReader reader
  return a