"hSetBuffering stdin NoBuffering" messes up terminal

Alastair Reid alastair at reid-consulting-uk.ltd.uk
Tue Oct 14 15:34:10 EDT 2003

On Tuesday 14 October 2003 2:11 pm, David Roundy wrote:
> On my terminal (aterm), calling
> hSetBuffering stdin NoBuffering
> within my program messes up the terminal settings somehow, [...]

If I understand recent changes correctly, this is a deliberate decision.  The 
idea is that if you wanted to write a program like 'stty' in Haskell, you'd 
be very disappointed if the terminal settings got switched back the moment 
your Haskell program terminated.

Given this (reasonable) change, it might be worth providing an additional 

  hWithBuffering :: Handle -> BufferMode -> IO a -> IO a

which sets the buffering mode back when it finishes.

(There's a bunch of alternative designs possible here - this has the virtue of 
being simple.)

Alastair Reid    www.haskell-consulting.com

More information about the Haskell-Cafe mailing list