[Haskell-cafe] Lazy IO with recursive reads?

Stephen Tetley stephen.tetley at gmail.com
Wed Feb 24 16:41:14 EST 2010

Hi Fabian

>From the source viewable in the Haddock docs supplied with GHC

- hGetContents calls lazyRead:

hGetContents :: Handle -> IO String
hGetContents handle =
   wantReadableHandle "hGetContents" handle $ \handle_ -> do
      xs <- lazyRead handle
      return (handle_{ haType=SemiClosedHandle}, xs )

- lazyRead :

lazyRead :: Handle -> IO String
lazyRead handle =
   unsafeInterleaveIO $

hGetContents is using unsafeInterleaveIO already so you don't have to.

Best wishes


More information about the Haskell-Cafe mailing list