The io-streams package

[Tags: bsd3, library]

Overview

The io-streams library contains simple and easy-to-use primitives for I/O using streams. Most users will want to import the top-level convenience module System.IO.Streams, which re-exports most of the library:

import           System.IO.Streams (InputStream, OutputStream)
import qualified System.IO.Streams as Streams

For first-time users, io-streams comes with an included tutorial, which can be found in the System.IO.Streams.Tutorial module.

Features

The io-streams user API has two basic types: InputStream a and OutputStream a, and three fundamental I/O primitives:

-- read an item from an input stream
Streams.System.IO.Streams.read :: System.IO.Streams.InputStream a -> IO (Maybe a)

-- push an item back to an input stream
Streams.System.IO.Streams.unRead :: a -> System.IO.Streams.InputStream a -> IO ()

-- write to an output stream
Streams.System.IO.Streams.write :: Maybe a -> System.IO.Streams.OutputStream a -> IO ()

Streams can be transformed by composition and hooked together with provided combinators:

ghci> Streams.fromList [1,2,3::Int] >>= Streams.map (*10) >>= Streams.toList
[10,20,30]

Stream composition leaves the original stream accessible:

ghci> input <- Streams.fromByteString "long string"
ghci> wrapped <- Streams.takeBytes 4 input
ghci> Streams.read wrapped
Just "long"
ghci> Streams.read wrapped
Nothing
ghci> Streams.read input
Just " string"

Simple types and operations in the IO monad mean straightforward and simple exception handling and resource cleanup using Haskell standard library facilities like Control.Exception.bracket.

io-streams comes with:

ChangeLog

1.0.1.0
Added System.IO.Streams.Combinators.ignoreEof.
1.0.0.1
Fixed some haddock markup.

Properties

Versions1.0.0.0, 1.0.0.1, 1.0.1.0, 1.0.2.0, 1.0.2.1, 1.0.2.2, 1.1.0.0, 1.1.0.1, 1.1.0.2, 1.1.0.3, 1.1.1.0, 1.1.2.0, 1.1.2.1, 1.1.2.2, 1.1.3.0, 1.1.4.0, 1.1.4.1, 1.1.4.2, 1.1.4.3, 1.1.4.4, 1.1.4.5, 1.1.4.6, 1.2.0.0
Dependenciesattoparsec (==0.10.*), base (==4.*), blaze-builder (>=0.3.1 && <0.4), bytestring (>=0.9 && <0.11), network (==2.4.*), primitive (>=0.2 && <0.6), text (>=0.10 && <0.12), time (>=1.2 && <1.5), transformers (>=0.2 && <0.4), vector (>=0.7 && <0.11), zlib-bindings (==0.1.*)
LicenseBSD3
MaintainerGregory Collins <greg@gregorycollins.net>
CategoryData, Network, IO-Streams
Source repositoryhead: git clone git://github.com/snapframework/io-streams.git
Upload dateMon Mar 11 21:44:08 UTC 2013
Uploaded byGregoryCollins
DistributionsDebian:1.1.4.6, Fedora:1.1.4.5, NixOS:1.2.0.0
Downloads10597 total (1172 in last 30 days)

Modules

[Index]

Downloads

Maintainers' corner

For package maintainers and hackage trustees