getContents package:base

The getContents operation returns all user input as a single string, which is read lazily as it is needed. getContents is implemented as hGetContents stdin. This operation may fail with the same errors as hGetContents.

Examples

>>> getContents >>= putStr
> aaabbbccc :D
aaabbbccc :D
> I hope you have a great day
I hope you have a great day
> ^D
>>> getContents >>= print . length
> abc
> <3
> def ^D
11
The getContents' operation returns all user input as a single string, which is fully read before being returned getContents' is implemented as hGetContents' stdin. This operation may fail with the same errors as hGetContents'.

Examples

>>> getContents' >>= putStr
> aaabbbccc :D
> I hope you have a great day
aaabbbccc :D
I hope you have a great day
>>> getContents' >>= print . length
> abc
> <3
> def ^D
11
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:
The hGetContents' operation reads all input on the given handle before returning it as a String and closing the handle. This is a strict version of hGetContents