packages feed

compactable 0.1.0.0 → 0.1.0.1

raw patch · 2 files changed

+18/−5 lines, 2 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Control.Compactable: class Compactable (f :: * -> *) where compact = (>>= maybe empty return) fmapMaybe f = compact . fmap f applyMaybe fa = compact . (fa <*>) bindMaybe x = compact . (x >>=) traverseMaybe f = fmap compact . traverse f
+ Control.Compactable: class Compactable (f :: * -> *) where compact = (>>= maybe empty return) fmapMaybe f = compact . fmap f applyMaybe fa = compact . (fa <*>) bindMaybe x = compact . (x >>=) traverseMaybe f = fmap compact . traverse f filter f = fmapMaybe $ \ a -> if f a then Just a else Nothing

Files

compactable.cabal view
@@ -1,5 +1,5 @@ name:                compactable-version:             0.1.0.0+version:             0.1.0.1 synopsis:            A generalization for containers that can be stripped of Nothings. description:         Sometimes you have a collection of Maybes,                      and you want to extract the values. Actually that happens a whole lot.
src/Control/Compactable.hs view
@@ -134,6 +134,10 @@     traverseMaybe f = fmap compact . traverse f     {-# INLINABLE traverseMaybe #-} +    filter :: Functor f => (a -> Bool) -> f a -> f a+    filter f = fmapMaybe $ \a -> if f a then Just a else Nothing+    {-# INLINABLE filter #-}+ instance Compactable Maybe where     compact = join     {-# INLINABLE compact #-}@@ -148,6 +152,7 @@     fmapMaybe f (h:t) =         maybe (fmapMaybe f t) (: fmapMaybe f t) (f h)     {-# INLINABLE fmapMaybe #-}+    filter = Prelude.filter  instance Compactable IO @@ -183,22 +188,34 @@     {-# INLINABLE compact #-}     fmapMaybe = IntMap.mapMaybe     {-# INLINABLE fmapMaybe #-}+    filter = IntMap.filter+    {-# INLINABLE filter #-}  instance Compactable (Map.Map k) where     compact = Map.mapMaybe id     {-# INLINABLE compact #-}     fmapMaybe = Map.mapMaybe     {-# INLINABLE fmapMaybe #-}+    filter = Map.filter+    {-# INLINABLE filter #-}  instance Compactable Seq.Seq where     compact = fmap fromJust . Seq.filter isJust     {-# INLINABLE compact #-}+    filter = Seq.filter+    {-# INLINABLE filter #-}  instance Compactable Vector  instance Compactable (Const r) where     compact (Const r) = Const r     {-# INLINABLE compact #-}+    fmapMaybe _ (Const r) = Const r+    {-# INLINABLE fmapMaybe #-}+    bindMaybe (Const r) _ = Const r+    {-# INLINABLE bindMaybe #-}+    filter _ (Const r) = Const r+    {-# INLINABLE filter #-}  instance Monoid m => Compactable (Either m) where     compact (Right (Just x)) = Right x@@ -209,10 +226,6 @@  fforMaybe :: (Compactable f, Functor f) => f a -> (a -> Maybe b) -> f b fforMaybe = flip fmapMaybe---filter :: (Compactable f, Functor f) => (a -> Bool) -> f a -> f a-filter f = fmapMaybe $ \a -> if f a then Just a else Nothing   fmapMaybeM :: (Compactable f, Monad f) => (a -> MaybeT f b) -> f a -> f b