4 accumulate (map hIsOpen [stdin, stdout, stderr]) >>= \ opens ->
6 accumulate (map hIsClosed [stdin, stdout, stderr]) >>= \ closeds ->
8 accumulate (map hIsReadable [stdin, stdout, stderr]) >>= \ readables ->
10 accumulate (map hIsWritable [stdin, stdout, stderr]) >>= \ writables ->
12 accumulate (map hIsBlockBuffered [stdin, stdout, stderr]) >>= \ buffereds ->
14 accumulate (map hIsLineBuffered [stdin, stdout, stderr]) >>= \ buffereds ->
16 accumulate (map hIsNotBuffered [stdin, stdout, stderr]) >>= \ buffereds ->
19 -- these didn't make it into 1.3
20 hIsBlockBuffered h = hGetBuffering h >>= \ b -> return $ case b of { BlockBuffering _ -> True; _ -> False }
21 hIsLineBuffered h = hGetBuffering h >>= \ b -> return $ case b of { LineBuffering -> True; _ -> False }
22 hIsNotBuffered h = hGetBuffering h >>= \ b -> return $ case b of { NoBuffering -> True; _ -> False }