Computation
hGetContents hdl returns the list of
characters corresponding to the unread portion of the channel or file
managed by
hdl, which is put into an intermediate state,
semi-closed. In this state,
hdl is effectively closed,
but items are read from
hdl on demand and accumulated in a
special list returned by
hGetContents hdl.
Any operation that fails because a handle is closed, also fails if a
handle is semi-closed. The only exception is
hClose. 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.
Once a semi-closed handle becomes closed, the contents of the
associated list becomes fixed. The contents of this final list is only
partially specified: it will contain at least all the items of the
stream that were evaluated prior to the handle becoming closed.
Any I/O errors encountered while a handle is semi-closed are simply
discarded.
This operation may fail with: