packages feed

protolude 0.1.8 → 0.1.9

raw patch · 5 files changed

+40/−3 lines, 5 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

+ Applicative: (<<*>>) :: (Applicative f, Applicative g) => f (g (a -> b)) -> f (g a) -> f (g b)
+ Applicative: liftAA2 :: (Applicative f, Applicative g) => (a -> b -> c) -> f (g a) -> f (g b) -> f (g c)
+ Applicative: purer :: (Applicative f, Applicative g) => a -> f (g a)
+ List: product :: (Foldable f, Num a) => f a -> a
+ List: sum :: (Foldable f, Num a) => f a -> a
+ Protolude: guarded :: (Alternative f) => (a -> Bool) -> a -> f a
+ Protolude: guardedA :: (Functor f, Alternative t) => (a -> f Bool) -> a -> f (t a)
- Functor: (<$) :: a -> f b -> f a
+ Functor: (<$) :: Functor f => a -> f b -> f a
- Functor: fmap :: (a -> b) -> f a -> f b
+ Functor: fmap :: Functor f => (a -> b) -> f a -> f b
- Monad: (>>=) :: m a -> (a -> m b) -> m b
+ Monad: (>>=) :: Monad m => m a -> (a -> m b) -> m b
- Monad: mplus :: m a -> m a -> m a
+ Monad: mplus :: MonadPlus m => m a -> m a -> m a
- Monad: mzero :: m a
+ Monad: mzero :: MonadPlus m => m a
- Monad: return :: a -> m a
+ Monad: return :: Monad m => a -> m a

Files

protolude.cabal view
@@ -1,5 +1,5 @@ name:                protolude-version:             0.1.8+version:             0.1.9 synopsis:            A sensible set of defaults for writing custom Preludes. description:         A sensible set of defaults for writing custom Preludes. homepage:            https://github.com/sdiehl/protolude
src/Applicative.hs view
@@ -5,9 +5,13 @@   orAlt,   orEmpty,   eitherA,+  purer,+  liftAA2,+  (<<*>>), ) where  import Data.Bool (Bool)+import Data.Function ((.)) import Data.Either (Either(..)) import Data.Monoid (Monoid(..)) import Control.Applicative@@ -20,3 +24,12 @@  eitherA :: (Alternative f) => f a -> f b -> f (Either a b) eitherA a b = (Left <$> a) <|> (Right <$> b)++purer :: (Applicative f, Applicative g) => a -> f (g a)+purer = pure . pure++liftAA2 :: (Applicative f, Applicative g) => (a -> b -> c) -> f (g a) -> f (g b) -> f (g c)+liftAA2 = liftA2 . liftA2++(<<*>>) :: (Applicative f, Applicative g)  => f (g (a -> b)) -> f (g a) -> f (g b)+(<<*>>) = liftA2 (<*>)
src/Functor.hs view
@@ -23,11 +23,15 @@   )  import Data.Function (flip)+import Data.Function ((.))  infixl 4 $>  ($>) :: Functor f => f a -> b -> f b ($>) = flip (<$)++(<<$>>) :: (Functor f, Functor g) => (a -> b) -> f (g a) -> f (g b)+(<<$>>) = fmap . fmap  void :: Functor f => f a -> f () void x = () <$ x
src/List.hs view
@@ -6,16 +6,19 @@   ordNub,   sortOn,   list,+  product,+  sum ) where  import Data.List (sortBy) import Data.Maybe (Maybe(..)) import Data.Ord (Ord, comparing)-import Data.Foldable (Foldable, foldr)+import Data.Foldable (Foldable, foldr, foldl') import Data.Function ((.)) import Data.Functor (fmap) import Control.Monad (return) import qualified Data.Set as Set+import GHC.Num (Num, (+))  head :: (Foldable f) => f a -> Maybe a head = foldr (\x _ -> return x) Nothing@@ -37,3 +40,11 @@ list def f xs = case xs of   [] -> def   _  -> fmap f xs++{-# INLINE product #-}+product :: (Foldable f, Num a) => f a -> a+product = foldl' (+) 1++{-# INLINE sum #-}+sum :: (Foldable f, Num a) => f a -> a+sum = foldl' (+) 0
src/Protolude.hs view
@@ -20,7 +20,8 @@   foreach,   show,   pass,-+  guarded,+  guardedA,   LText,   LByteString, ) where@@ -94,6 +95,8 @@ import Data.Foldable as X hiding (     foldr1   , foldl1+  , product+  , sum   ) import Semiring as X import Data.Functor.Identity as X@@ -403,6 +406,12 @@  pass :: Applicative f => f () pass = pure ()++guarded :: (Alternative f) => (a -> Bool) -> a -> f a+guarded p x = X.bool empty (pure x) (p x)++guardedA :: (Functor f, Alternative t) => (a -> f Bool) -> a -> f (t a)+guardedA p x = X.bool empty (pure x) <$> p x  show :: (Show a, StringConv String b) => a -> b show x = toS (PBase.show x)