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

Reply via email to