-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Sequence ID IO-Streams -- -- Uniquely identify elements in a sequenced stream @package seqid-streams @version 0.1.0 module System.IO.Streams.SequenceId -- | Wrap an InputStream and check for dropped or duplicated -- sequence IDs. -- -- Example: -- --
-- ghci> fromList [1..10 :: SequenceId] >>= sequenceIdInputStream 0 id (fail . show) >>= toList
-- [1,2,3,4,5,6,7,8,9,10]
--
-- ghci> fromList [5..10 :: SequenceId] >>= sequenceIdInputStream 0 id (fail . show) >>= toList
-- *** Exception: user error (SequenceIdDropped (SequenceIds {lastSeqId = 0, currSeqId = 5}))
--
-- ghci> fromList [5..10 :: SequenceId] >>= sequenceIdInputStream 1 id (fail . show) >>= toList
-- *** Exception: user error (SequenceIdDuplicated (SequenceIds {lastSeqId = 1, currSeqId = 1}))
--
sequenceIdInputStream :: SequenceId -> (a -> SequenceId) -> (SequenceError -> IO ()) -> InputStream a -> IO (InputStream a)
-- | Wrap an OutputStream to give a sequence ID for each element
-- written.
--
-- Example:
--
-- -- (outStream', getSeqId) <- sequenceIdOutputStream 1 outStream -- return $ contramapM (addSeqId getSeqId) outStream' --sequenceIdOutputStream :: SequenceId -> OutputStream a -> IO (OutputStream a, IO SequenceId)