[Haskell] lazy printing
glynn.clements at virgin.net
Fri Sep 10 11:10:20 EDT 2004
Serge D. Mechveliani wrote:
> > Haskell is outputting lazily, but by default stdout is set to
> > LineBuffering - for efficiency, a line is only written to stdout
> > once it is complete. Try adding "\n" to the end of the "min2 ="
> > line to see what I mean.
> > To get the behaviour you describe, add import IO and
> > hSetBuffering stdout NoBuffering >> to the start of your main function.
> ( and what if it also aplies writeFile "log" ? )
Streams which are associated with files are fully-buffered by default,
so writeFile would generate the output in blocks. If you wanted to
change the buffering, you would have to open the file yourself so that
you could get at the descriptor, e.g.
handle <- openFile "log" AppendMode
hSetBuffering handle NoBuffering
hPutStr handle string
Glynn Clements <glynn.clements at virgin.net>
More information about the Haskell