hw-streams 0.0.0.4 → 0.0.0.5
raw patch · 2 files changed
+20/−8 lines, 2 filesdep ~QuickCheckdep ~ghc-primPVP: minor bump suggested
API additions: PVP suggests at least a minor version bump
Dependency ranges changed: QuickCheck, ghc-prim
API changes (from Hackage documentation)
+ HaskellWorks.Data.Streams.Stream: dupMap :: forall a b. (a -> b) -> (a -> b) -> Stream a -> Stream b
Files
hw-streams.cabal view
@@ -3,7 +3,7 @@ -- see: https://github.com/sol/hpack name: hw-streams-version: 0.0.0.4+version: 0.0.0.5 synopsis: Primitive functions and data types description: Primitive functions and data types. category: Data@@ -39,7 +39,7 @@ build-depends: base >= 4.8 && < 5 , bytestring >= 0.9 && < 0.11- , ghc-prim >= 0.5.1.1 && < 0.6+ , ghc-prim >= 0.4 && < 0.6 , hw-bits >= 0.7.0.3 && < 0.8 , hw-prim >= 0.6.2.17 && < 0.7 , mmap >= 0.5 && < 0.6@@ -72,7 +72,7 @@ build-depends: base >= 4.8 && < 5 , bytestring >= 0.9 && < 0.11- , ghc-prim >= 0.5.1.1 && < 0.6+ , ghc-prim >= 0.4 && < 0.6 , hw-bits >= 0.7.0.3 && < 0.8 , hw-prim >= 0.6.2.17 && < 0.7 , mmap >= 0.5 && < 0.6@@ -80,7 +80,7 @@ , vector >= 0.12 && < 0.13 , semigroups >= 0.8.4 && < 0.19 , transformers >= 0.4 && < 0.6- , QuickCheck >= 2.10 && < 2.12+ , QuickCheck >= 2.10 && < 2.13 , directory >= 1.2 && < 1.4 , exceptions >= 0.8 && < 0.11 , hedgehog >= 0.5 && < 0.7@@ -104,7 +104,7 @@ build-depends: base >= 4.8 && < 5 , bytestring >= 0.9 && < 0.11- , ghc-prim >= 0.5.1.1 && < 0.6+ , ghc-prim >= 0.4 && < 0.6 , hw-bits >= 0.7.0.3 && < 0.8 , hw-prim >= 0.6.2.17 && < 0.7 , mmap >= 0.5 && < 0.6
src/HaskellWorks/Data/Streams/Stream.hs view
@@ -1,6 +1,7 @@-{-# LANGUAGE CPP #-}-{-# LANGUAGE GADTs #-}-{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE CPP #-}+{-# LANGUAGE GADTs #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE ScopedTypeVariables #-} module HaskellWorks.Data.Streams.Stream where @@ -123,3 +124,14 @@ Skip stateB1 -> Skip (stateA0, Just (Stream stepB stateB1 Unknown)) Done -> Skip (stateA0, Nothing) {-# INLINE concatMap #-}++dupMap :: forall a b. (a -> b) -> (a -> b) -> Stream a -> Stream b+dupMap f g (Stream stepA stateA _) = Stream (mkStepB stepA) (stateA, Nothing) Unknown+ where mkStepB :: (s -> Step s a) -> (s, Maybe b) -> Step (s, Maybe b) b+ mkStepB step (s, mw) = case mw of+ Nothing -> case step s of+ Yield a t -> Yield (f a) (t, Just (g a))+ Skip t -> Skip (t, Nothing)+ Done -> Done+ Just w -> Yield w (s, Nothing)+{-# INLINE dupMap #-}