Simple, composable, and easy-to-use stream I/O for Haskell
Haskell
100
337 commits
updated Mar 24, 2025
The io-streams library contains simple and easy to use primitives for I/O
using streams. Based on simple types with one type parameter (InputStream a
and OutputStream a), io-streams provides a basic interface to
side-effecting input and output in IO monad with the following
features:
three fundamental I/O primitives that anyone can understand: read :: InputStream a -> IO (Maybe a), unRead :: a -> InputStream a -> IO (),
and write :: Maybe a -> OutputStream a -> IO ().
simple types and side-effecting IO operations mean straightforward and
simple exception handling and resource cleanup using standard Haskell
facilities like bracket.
code to transform files, handles, and sockets to streams
a variety of combinators for wrapping and transforming streams, including
compression and decompression using zlib, controlling precisely how many
bytes are read to or written from a socket, buffering output using
blaze-builder, etc.
support for parsing from streams using attoparsec.
(top 30 of 31)
Haskell
99.5%
Simple, composable, and easy-to-use stream I/O for Haskell
Haskell
100
337 commits
updated Mar 24, 2025
The io-streams library contains simple and easy to use primitives for I/O
using streams. Based on simple types with one type parameter (InputStream a
and OutputStream a), io-streams provides a basic interface to
side-effecting input and output in IO monad with the following
features:
three fundamental I/O primitives that anyone can understand: read :: InputStream a -> IO (Maybe a), unRead :: a -> InputStream a -> IO (),
and write :: Maybe a -> OutputStream a -> IO ().
simple types and side-effecting IO operations mean straightforward and
simple exception handling and resource cleanup using standard Haskell
facilities like bracket.
code to transform files, handles, and sockets to streams
a variety of combinators for wrapping and transforming streams, including
compression and decompression using zlib, controlling precisely how many
bytes are read to or written from a socket, buffering output using
blaze-builder, etc.
support for parsing from streams using attoparsec.
(top 30 of 31)
Haskell
99.5%