-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Witherable = Traversable + Filterable -- -- Witherable = Traversable + Filterable @package witherable-class @version 0 module Data.Witherable.Class -- | Like Functor, but you can remove elements instead of updating -- them. -- -- Formally, the class Filterable represents a functor from -- Kleisli Maybe to Hask. -- -- A definition of mapMaybe must satisfy the following laws: -- --
-- catMaybes ≡ mapMaybe id --catMaybes :: Filterable f => f (Maybe a) -> f a -- |
-- filter f . filter g ≡ filter (liftA2 (&&) f g) --filter :: Filterable f => (a -> Bool) -> f a -> f a -- | An enhancement of Traversable with Filterable -- -- A definition of wither must satisfy the following laws: -- --
-- t . wither f ≡ wither (t . f) --class (Traversable t, Filterable t) => Witherable t -- | Effectful mapMaybe. -- --
-- wither (pure . f) ≡ pure . mapMaybe f --wither :: (Witherable t, Applicative f) => (a -> f (Maybe b)) -> t a -> f (t b) -- |
-- Monadic variant of wither. This may have more efficient implementation. --witherM :: (Witherable t, Monad m) => (a -> m (Maybe b)) -> t a -> m (t b) filterA :: (Witherable t, Applicative f) => (a -> f Bool) -> t a -> f (t a) instance Data.Witherable.Class.Filterable f => Data.Witherable.Class.Filterable (Control.Monad.Trans.Identity.IdentityT f) instance Data.Witherable.Class.Filterable t => Data.Witherable.Class.Filterable (Data.Functor.Reverse.Reverse t) instance Data.Witherable.Class.Filterable t => Data.Witherable.Class.Filterable (Control.Applicative.Backwards.Backwards t) instance Data.Witherable.Class.Witherable GHC.Maybe.Maybe instance Data.Witherable.Class.Witherable Data.Semigroup.Option instance GHC.Base.Monoid e => Data.Witherable.Class.Witherable (Data.Either.Either e) instance Data.Witherable.Class.Witherable [] instance Data.Witherable.Class.Witherable Control.Applicative.ZipList instance Data.Witherable.Class.Witherable Data.IntMap.Internal.IntMap instance Data.Witherable.Class.Witherable (Data.Map.Internal.Map k) instance (GHC.Classes.Eq k, Data.Hashable.Class.Hashable k) => Data.Witherable.Class.Witherable (Data.HashMap.Base.HashMap k) instance Data.Witherable.Class.Witherable Data.Proxy.Proxy instance Data.Witherable.Class.Witherable (Data.Functor.Const.Const r) instance Data.Witherable.Class.Witherable Data.Vector.Vector instance Data.Witherable.Class.Witherable Data.Sequence.Internal.Seq instance (Data.Traversable.Traversable f, Data.Witherable.Class.Witherable g) => Data.Witherable.Class.Witherable (Data.Functor.Compose.Compose f g) instance (Data.Witherable.Class.Witherable f, Data.Witherable.Class.Witherable g) => Data.Witherable.Class.Witherable (Data.Functor.Product.Product f g) instance (Data.Witherable.Class.Witherable f, Data.Witherable.Class.Witherable g) => Data.Witherable.Class.Witherable (Data.Functor.Sum.Sum f g) instance Data.Witherable.Class.Witherable f => Data.Witherable.Class.Witherable (Control.Monad.Trans.Identity.IdentityT f) instance Data.Traversable.Traversable t => Data.Witherable.Class.Witherable (Control.Monad.Trans.Maybe.MaybeT t) instance Data.Witherable.Class.Witherable t => Data.Witherable.Class.Witherable (Data.Functor.Reverse.Reverse t) instance Data.Witherable.Class.Witherable t => Data.Witherable.Class.Witherable (Control.Applicative.Backwards.Backwards t) instance Data.Witherable.Class.Witherable GHC.Generics.V1 instance Data.Witherable.Class.Witherable GHC.Generics.U1 instance Data.Witherable.Class.Witherable f => Data.Witherable.Class.Witherable (GHC.Generics.Rec1 f) instance Data.Witherable.Class.Witherable f => Data.Witherable.Class.Witherable (GHC.Generics.M1 i c f) instance (Data.Witherable.Class.Witherable f, Data.Witherable.Class.Witherable g) => Data.Witherable.Class.Witherable (f GHC.Generics.:*: g) instance (Data.Witherable.Class.Witherable f, Data.Witherable.Class.Witherable g) => Data.Witherable.Class.Witherable (f GHC.Generics.:+: g) instance (Data.Traversable.Traversable f, Data.Witherable.Class.Witherable g) => Data.Witherable.Class.Witherable (f GHC.Generics.:.: g) instance Data.Witherable.Class.Filterable GHC.Maybe.Maybe instance Data.Witherable.Class.Filterable Data.Semigroup.Option instance GHC.Base.Monoid e => Data.Witherable.Class.Filterable (Data.Either.Either e) instance Data.Witherable.Class.Filterable [] instance Data.Witherable.Class.Filterable Control.Applicative.ZipList instance Data.Witherable.Class.Filterable Data.IntMap.Internal.IntMap instance Data.Witherable.Class.Filterable (Data.Map.Internal.Map k) instance (GHC.Classes.Eq k, Data.Hashable.Class.Hashable k) => Data.Witherable.Class.Filterable (Data.HashMap.Base.HashMap k) instance Data.Witherable.Class.Filterable Data.Proxy.Proxy instance Data.Witherable.Class.Filterable (Data.Functor.Const.Const r) instance Data.Witherable.Class.Filterable Data.Vector.Vector instance Data.Witherable.Class.Filterable Data.Sequence.Internal.Seq instance (GHC.Base.Functor f, Data.Witherable.Class.Filterable g) => Data.Witherable.Class.Filterable (Data.Functor.Compose.Compose f g) instance (Data.Witherable.Class.Filterable f, Data.Witherable.Class.Filterable g) => Data.Witherable.Class.Filterable (Data.Functor.Product.Product f g) instance (Data.Witherable.Class.Filterable f, Data.Witherable.Class.Filterable g) => Data.Witherable.Class.Filterable (Data.Functor.Sum.Sum f g) instance GHC.Base.Functor f => Data.Witherable.Class.Filterable (Control.Monad.Trans.Maybe.MaybeT f) instance Data.Witherable.Class.Filterable GHC.Generics.V1 instance Data.Witherable.Class.Filterable GHC.Generics.U1 instance Data.Witherable.Class.Filterable f => Data.Witherable.Class.Filterable (GHC.Generics.Rec1 f) instance Data.Witherable.Class.Filterable f => Data.Witherable.Class.Filterable (GHC.Generics.M1 i c f) instance (Data.Witherable.Class.Filterable f, Data.Witherable.Class.Filterable g) => Data.Witherable.Class.Filterable (f GHC.Generics.:*: g) instance (Data.Witherable.Class.Filterable f, Data.Witherable.Class.Filterable g) => Data.Witherable.Class.Filterable (f GHC.Generics.:+: g) instance (GHC.Base.Functor f, Data.Witherable.Class.Filterable g) => Data.Witherable.Class.Filterable (f GHC.Generics.:.: g)