
Bulat Ziganshin wrote:
moreover - we can implement locking as special "converter" type, that can be applied to any mutable object - stream, collection, counter. that allows to simplify implementations and add locking only to those Streams where we really need it. like these:
h <- openFD "test" >>= addUsingOfSelect >>= addBuffering 65536 >>= addCharEncoding utf8 >>= attachUserData dictionary >>= addLocking
This is really nice - exactly what I'd like to see in the I/O library. The trick is making it perform well, though... but I'm sure that's your main focus too. Still, I'm not sure that putting both input and output streams in the same type is the right thing, I seem to remember a lot of things being simpler with them separate. Cheers, Simon