seqid-streams 0.1.0 → 0.2.0
raw patch · 2 files changed
+13/−14 lines, 2 filesdep ~seqidPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: seqid
API changes (from Hackage documentation)
- System.IO.Streams.SequenceId: sequenceIdInputStream :: SequenceId -> (a -> SequenceId) -> (SequenceError -> IO ()) -> InputStream a -> IO (InputStream a)
+ System.IO.Streams.SequenceId: sequenceIdInputStream :: SequenceId -> (a -> SequenceId) -> (SequenceIdError -> IO ()) -> InputStream a -> IO (InputStream a)
Files
- seqid-streams.cabal +2/−2
- src/System/IO/Streams/SequenceId.hs +11/−12
seqid-streams.cabal view
@@ -1,5 +1,5 @@ name: seqid-streams-version: 0.1.0+version: 0.2.0 synopsis: Sequence ID IO-Streams description: Uniquely identify elements in a sequenced stream License: BSD3@@ -15,7 +15,7 @@ build-depends: base >= 4.7 && < 4.8 , io-streams >= 1.2 && < 1.3- , seqid >= 0.1 && < 0.2+ , seqid >= 0.2 && < 0.3 hs-source-dirs: src
src/System/IO/Streams/SequenceId.hs view
@@ -1,7 +1,7 @@ module System.IO.Streams.SequenceId where import Control.Applicative ((<$>))-import Data.SequenceId (SequenceError, SequenceId, checkSeqId,+import Data.SequenceId (SequenceId, SequenceIdError, checkSeqId, nextSeqId) import System.IO.Streams (InputStream, OutputStream) import qualified System.IO.Streams as Streams@@ -17,23 +17,22 @@ -- [1,2,3,4,5,6,7,8,9,10] -- -- ghci> 'System.IO.Streams.fromList' [5..10 :: 'Data.SequenceId.SequenceId'] >>= 'sequenceIdInputStream' 0 'id' ('fail' . 'show') >>= 'System.IO.Streams.toList'--- *** Exception: user error ('Data.SequenceId.SequenceIdDropped' ('Data.SequenceId.SequenceIds' {lastSeqId = 0, currSeqId = 5}))+-- *** Exception: user error ('Data.SequenceId.SequenceIdError' {errType = 'Data.SequenceId.SequenceIdDropped', lastSeqId = 0, currSeqId = 5}) ----- ghci> 'System.IO.Streams.fromList' [5..10 :: 'Data.SequenceId.SequenceId'] >>= 'sequenceIdInputStream' 1 'id' ('fail' . 'show') >>= 'System.IO.Streams.toList'--- *** Exception: user error ('Data.SequenceId.SequenceIdDuplicated' ('Data.SequenceId.SequenceIds' {lastSeqId = 1, currSeqId = 1}))+-- ghci> 'System.IO.Streams.fromList' [1..10 :: 'Data.SequenceId.SequenceId'] >>= 'sequenceIdInputStream' 5 'id' ('fail' . 'show') >>= 'System.IO.Streams.toList'+-- *** Exception: user error ('Data.SequenceId.SequenceIdError' {errType = 'Data.SequenceId.SequenceIdDuplicated', lastSeqId = 5, currSeqId = 1}) -- @-sequenceIdInputStream :: SequenceId -- ^ Initial sequence ID- -> (a -> SequenceId) -- ^ Function applied to each element of the stream to get the sequence ID- -> (SequenceError -> IO ()) -- ^ Error handler- -> InputStream a -- ^ 'System.IO.Streams.InputStream' to check the sequence of- -> IO (InputStream a) -- ^ Pass-through of the given stream+sequenceIdInputStream :: SequenceId -- ^ Initial sequence ID+ -> (a -> SequenceId) -- ^ Function applied to each element of the stream to get the sequence ID+ -> (SequenceIdError -> IO ()) -- ^ Error handler+ -> InputStream a -- ^ 'System.IO.Streams.InputStream' to check the sequence of+ -> IO (InputStream a) -- ^ Pass-through of the given stream sequenceIdInputStream initSeqId getSeqId seqFaultHandler inStream = fst <$> Streams.inputFoldM f initSeqId inStream where f lastSeqId x = do let currSeqId = getSeqId x- check = checkSeqId lastSeqId currSeqId- maybe (return ()) seqFaultHandler check- return currSeqId+ maybe (return ()) seqFaultHandler $ checkSeqId lastSeqId currSeqId+ return $ max currSeqId lastSeqId ------------------------------------------------------------------------------