[Haskell-cafe] hPutStrLn and hFlush

Sebastian Sylvan sebastian.sylvan at gmail.com
Mon Jan 9 11:16:42 EST 2006


On 1/9/06, Sebastian Sylvan <sebastian.sylvan at gmail.com> wrote:
> On 1/9/06, Gracjan Polak <gracjanpolak at gmail.com> wrote:
> >
> > Hi all,
> >
> > A bit strange behaviour with hPutStrLn. Consider following program:
> >
> > main = do
> >     handle <- openFile "output.txt" WriteMode
> >     hPutStrLn handle (unlines contLines2)
> >     -- hFlush houtput
> >     where
> >         contLines2 = flip map [1..2000] $
> >               \x -> show x ++ " been there done that"
> >
> > Outputs file which ends with following lines:
> >
> > 1989 been there done that
> > 1990 been there done that
> > 1991 been there done that
> > 1992 been there done that
> > 199
> > (END)
> >
> > So the output is truncated. When I uncomment hFlush, file is fully written.
> > Is this expected/documented behaviour?
> >
> > Platform: WinXP, GHC version 6.4.1
> >
>
> Looks like the buffering is BlockBuffering for your output. Try
> changing that using hSetBuffering stdout LineBuffering (or
> NoBuffering).

Err, you'd want to change the buffering on  your handle, not stdout,
obviously. :-)

--
Sebastian Sylvan
+46(0)736-818655
UIN: 44640862


More information about the Haskell-Cafe mailing list