
On 10/09/10 18:49, Joey Hess wrote:
The function below always returns "", rather than the file's contents. _Real World Haskell_ touches on how laziness can make this problimatic, without really giving a solution, other than throwing in a putStr to force evaluation, which can't be done here. How can I make hGetContents strict, to ensure the file contents are really read before it gets closed?
There are various hacks to do it (including ones with no external side-effects that just use "case" / "seq" / etc. quite thoroughly)... But realistically you should use a library that doesn't add laziness, if laziness is not what you want. For example, "strict" on Hackage http://hackage.haskell.org/package/strict http://hackage.haskell.org/packages/archive/strict/0.3.2/doc/html/System-IO-... -Isaac