hw-prim 0.6.2.25 → 0.6.2.26
raw patch · 3 files changed
+42/−1 lines, 3 filesPVP: minor bump suggested
API additions: PVP suggests at least a minor version bump
API changes (from Hackage documentation)
+ HaskellWorks.Data.Foldable: foldFirst :: Foldable t => t a -> Maybe a
+ HaskellWorks.Data.Foldable: foldLast :: Foldable t => t a -> Maybe a
Files
- hw-prim.cabal +3/−1
- src/HaskellWorks/Data/Foldable.hs +14/−0
- test/HaskellWorks/Data/FoldableSpec.hs +25/−0
hw-prim.cabal view
@@ -1,7 +1,7 @@ cabal-version: 2.2 name: hw-prim-version: 0.6.2.25+version: 0.6.2.26 synopsis: Primitive functions and data types description: Primitive functions and data types. category: Data@@ -73,6 +73,7 @@ HaskellWorks.Data.Drop HaskellWorks.Data.Empty HaskellWorks.Data.Filter+ HaskellWorks.Data.Foldable HaskellWorks.Data.FromByteString HaskellWorks.Data.FromForeignRegion HaskellWorks.Data.Generate@@ -123,6 +124,7 @@ main-is: Spec.hs other-modules: HaskellWorks.Data.ByteStringSpec+ HaskellWorks.Data.FoldableSpec HaskellWorks.Data.FromByteStringSpec HaskellWorks.Data.FromForeignRegionSpec HaskellWorks.Data.SearchSpec
+ src/HaskellWorks/Data/Foldable.hs view
@@ -0,0 +1,14 @@+module HaskellWorks.Data.Foldable+ ( foldFirst+ , foldLast+ ) where++foldFirst :: Foldable t => t a -> Maybe a+foldFirst = foldr (const . Just) Nothing+{-# INLINE foldFirst #-}++foldLast :: Foldable t => t a -> Maybe a+foldLast = foldl go Nothing+ where go :: Maybe a -> a -> Maybe a+ go _ = Just+{-# INLINE foldLast #-}
+ test/HaskellWorks/Data/FoldableSpec.hs view
@@ -0,0 +1,25 @@+{-# OPTIONS_GHC -fno-warn-incomplete-patterns #-}+{-# LANGUAGE OverloadedLists #-}+{-# LANGUAGE ScopedTypeVariables #-}++module HaskellWorks.Data.FoldableSpec (spec) where++import Data.Maybe+import HaskellWorks.Data.Foldable+import HaskellWorks.Hspec.Hedgehog+import Hedgehog+import Test.Hspec++import qualified Hedgehog.Gen as G+import qualified Hedgehog.Range as R++{-# ANN module ("HLint: Ignore Redundant do" :: String) #-}++spec :: Spec+spec = describe "HaskellWorks.Data.FoldableSpec" $ do+ it "foldFirst" $ requireProperty $ do+ as <- forAll $ G.list (R.linear 0 10) (G.int (R.constantBounded))+ foldFirst as === listToMaybe as+ it "foldLast" $ requireProperty $ do+ as <- forAll $ G.list (R.linear 0 10) (G.int (R.constantBounded))+ foldLast as === listToMaybe (reverse as)