extra 1.4.12 → 1.5
raw patch · 4 files changed
+24/−19 lines, 4 filesdep ~basePVP ok
version bump matches the API change (PVP)
Dependency ranges changed: base
API changes (from Hackage documentation)
- Data.Either.Extra: fromLeft :: Either l r -> l
+ Data.Either.Extra: fromLeft :: a -> Either a b -> a
- Data.Either.Extra: fromRight :: Either l r -> r
+ Data.Either.Extra: fromRight :: b -> Either a b -> b
- Extra: fromLeft :: Either l r -> l
+ Extra: fromLeft :: a -> Either a b -> a
- Extra: fromRight :: Either l r -> r
+ Extra: fromRight :: b -> Either a b -> b
Files
- CHANGES.txt +2/−0
- extra.cabal +1/−1
- src/Data/Either/Extra.hs +17/−14
- test/TestGen.hs +4/−4
CHANGES.txt view
@@ -1,5 +1,7 @@ Changelog for Extra +1.5+ Change fromLeft/fromRight signatures to follow the base libraries 1.4.12 Add writeVar 1.4.11
extra.cabal view
@@ -1,7 +1,7 @@ cabal-version: >= 1.10 build-type: Simple name: extra-version: 1.4.12+version: 1.5 license: BSD3 license-file: LICENSE category: Development
src/Data/Either/Extra.hs view
@@ -11,23 +11,26 @@ import Data.Either --- | The 'fromLeft' function extracts the element out of a 'Left' and--- throws an error if its argument is 'Right'.--- Much like 'fromJust', using this function in polished code is usually a bad idea.++#if __GLASGOW_HASKELL__ < 801++-- | Return the contents of a 'Left'-value or a default value otherwise. ----- > \x -> fromLeft (Left x) == x--- > \x -> fromLeft (Right x) == undefined-fromLeft :: Either l r -> l-fromLeft (Left x) = x+-- > fromLeft 1 (Left 3) == 3+-- > fromLeft 1 (Right "foo") == 1+fromLeft :: a -> Either a b -> a+fromLeft _ (Left a) = a+fromLeft a _ = a --- | The 'fromRight' function extracts the element out of a 'Right' and--- throws an error if its argument is 'Left'.--- Much like 'fromJust', using this function in polished code is usually a bad idea.+-- | Return the contents of a 'Right'-value or a default value otherwise. ----- > \x -> fromRight (Right x) == x--- > \x -> fromRight (Left x) == undefined-fromRight :: Either l r -> r-fromRight (Right x) = x+-- > fromRight 1 (Right 3) == 3+-- > fromRight 1 (Left "foo") == 1+fromRight :: b -> Either a b -> b+fromRight _ (Right b) = b+fromRight b _ = b++#endif #if __GLASGOW_HASKELL__ < 708 -- | Test if an 'Either' value is the 'Left' constructor.
test/TestGen.hs view
@@ -49,10 +49,10 @@ testGen "findM (Just . isUpper) \"teST\" == Just (Just 'S')" $ findM (Just . isUpper) "teST" == Just (Just 'S') testGen "findM (Just . isUpper) \"test\" == Just Nothing" $ findM (Just . isUpper) "test" == Just Nothing testGen "findM (Just . const True) [\"x\",undefined] == Just (Just \"x\")" $ findM (Just . const True) ["x",undefined] == Just (Just "x")- testGen "\\x -> fromLeft (Left x) == x" $ \x -> fromLeft (Left x) == x- testGen "\\x -> fromLeft (Right x) == undefined" $ \x -> erroneous $ fromLeft (Right x)- testGen "\\x -> fromRight (Right x) == x" $ \x -> fromRight (Right x) == x- testGen "\\x -> fromRight (Left x) == undefined" $ \x -> erroneous $ fromRight (Left x)+ testGen "fromLeft 1 (Left 3) == 3" $ fromLeft 1 (Left 3) == 3+ testGen "fromLeft 1 (Right \"foo\") == 1" $ fromLeft 1 (Right "foo") == 1+ testGen "fromRight 1 (Right 3) == 3" $ fromRight 1 (Right 3) == 3+ testGen "fromRight 1 (Left \"foo\") == 1" $ fromRight 1 (Left "foo") == 1 testGen "\\x -> fromEither (Left x ) == x" $ \x -> fromEither (Left x ) == x testGen "\\x -> fromEither (Right x) == x" $ \x -> fromEither (Right x) == x testGen "\\xs -> repeatedly (splitAt 3) xs == chunksOf 3 xs" $ \xs -> repeatedly (splitAt 3) xs == chunksOf 3 xs