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