Thanks! I was worried about how/where would I place hClose! On Mon, Apr 14, 2008 at 10:58 PM, Brent Yorgey <[EMAIL PROTECTED]> wrote:
> > 2008/4/14 Abhay Parvate <[EMAIL PROTECTED]>: > > Hello, > > > > In describing the Handle type, the GHC documentation says (in the > > System.IO documentation): > > > > GHC note: a Handle will be automatically closed when the garbage > > collector detects that it has become unreferenced by the program. However, > > relying on this behaviour is not generally recommended: the garbage > > collector is unpredictable. If possible, use explicit an explicit hClose to > > close Handles when they are no longer required. GHC does not currently > > attempt to free up file descriptors when they have run out, it is your > > responsibility to ensure that this doesn't happen. > > > > But one cannot call hClose on Handles on which something like > > hGetContents has been called; it just terminates the character list at the > > point till which it has already read. Further the manual says that > > hGetContents puts the handle in the semi-closed state, and further, > > > > A semi-closed handle becomes closed: > > > > - if hClose is applied to it; > > - if an I/O error occurs when reading an item from the handle; > > - or once the entire contents of the handle has been read. > > > > So do I safely assume here, according to the third point above, that > > it's fine if I do not call hClose explicitly as far as I am consuming all > > the contents returned by hGetContents? > > > > Yes, not only is it fine, it's recommended! Calling hClose explicitly on > a handle after calling hGetContents is a sure way to introduce bugs. > > -Brent > >
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe