| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
System.IO.Streams.SequenceId
Synopsis
- sequenceIdInputStream :: Integral s => s -> (a -> s) -> (SequenceIdError s -> IO ()) -> InputStream a -> IO (InputStream a)
- sequenceIdOutputStream :: Integral s => s -> (s -> a -> b) -> OutputStream b -> IO (OutputStream a)
Documentation
sequenceIdInputStream Source #
Arguments
| :: Integral s | |
| => s | Initial sequence ID |
| -> (a -> s) | Function applied to each element of the stream to get the sequence ID |
| -> (SequenceIdError s -> IO ()) | Error handler |
| -> InputStream a |
|
| -> IO (InputStream a) | Pass-through of the given stream |
Wrap an InputStream and check for dropped or duplicated sequence IDs.
Example:
ghci>fromList[1..10 ::SequenceId] >>=sequenceIdInputStream0id(fail.show) >>=toList[1,2,3,4,5,6,7,8,9,10] ghci>fromList[5..10 ::SequenceId] >>=sequenceIdInputStream0id(fail.show) >>=toList*** Exception: user error (SequenceIdError{errType =SequenceIdDropped, lastSeqId = 0, currSeqId = 5}) ghci>fromList[1..10 ::SequenceId] >>=sequenceIdInputStream5id(fail.show) >>=toList*** Exception: user error (SequenceIdError{errType =SequenceIdDuplicated, lastSeqId = 5, currSeqId = 1})
sequenceIdOutputStream Source #
Arguments
| :: Integral s | |
| => s | Initial sequence ID |
| -> (s -> a -> b) | Transformation function |
| -> OutputStream b |
|
| -> IO (OutputStream a) | ( |
Wrap an OutputStream to give a sequence ID for each element written.
Example:
(outStream', getSeqId) <-sequenceIdOutputStream1 outStream return $contramapM(addSeqId getSeqId) outStream'