Simple, composable, and easy-to-use stream I/O for Haskell