closing file handles

Hal Daume hdaume@ISI.EDU
Sun, 09 Sep 2001 12:23:43 -0700


I'm sorry, I had a small error in my code.  It should have been:

>go filelist = mapM go' filelist          -- no "do return"
>    where go' f = do h <- openFile f ReadMode
>                     text <- hGetContents h
>                     let c = head $! text
>                     return (c `seq` (hClose h `seq` c))

 - Hal

Hal Daume wrote:
> 
> I'm working with data spanning a lot of separate files and am having
> difficulty getting ghc to close the files.  I've reduced my code to the
> following bit of code which should show my problem:
> 
> >go filelist = do return (mapM go' filelist)
> >    where go' f = do h <- openFile f ReadMode
> >                     text <- hGetContents h
> >                     let c = head $! text
> >                     return (c `seq` (hClose h `seq` c))
> 
> basically, you give "go" a list of files and it'll give you the first
> character from each of these.
> 
> if i run this with 30-40 files, it's okay.  but when i run it with a
> list of 400 files, i get:
> 
> *** Exception: resource exhausted
> Action: openFile
> Reason: process file table full
> File:
> /nfs/isd/marcu/RST-CORPUS-LDC/RSTtrees-WSJ-main-1.0/DATA/wsj_1355.out.dis
> 
> which doesn't make sense to me, since it should be (as far as i can
> tell) closing each of the handles (the yucky "c `seq` (hClose h `seq`
> c)" is my way of making sure that it reads the first character before it
> closes the file and then makes sure to close the file before returning
> the character -- if there is a better way, please let me know).
> 
> if anyone can tell me what my problem is, that would be great!
> 
> also, along the same lines, are there any good papers on using haskell
> with large amounts of data?  i frequently have problems like this and if
> there were a unified theory behind dealing with them, it would be
> great.  any pointers would be helpful.
> 
> thanks!
> 
> --
> Hal Daume III
> 
>  "Computer science is no more about computers    | hdaume@isi.edu
>   than astronomy is about telescopes." -Dijkstra | www.isi.edu/~hdaume
> 
> _______________________________________________
> Haskell mailing list
> Haskell@haskell.org
> http://www.haskell.org/mailman/listinfo/haskell

-- 
Hal Daume III

 "Computer science is no more about computers    | hdaume@isi.edu
  than astronomy is about telescopes." -Dijkstra | www.isi.edu/~hdaume