Copyright | (c) Fumiaki Kinoshita 2015 |
---|---|
License | BSD3 |
Maintainer | Fumiaki Kinoshita <fumiexcel@gmail.com> |
Stability | provisional |
Portability | non-portable |
Safe Haskell | Trustworthy |
Language | Haskell2010 |
Data.Witherable
Description
Deprecated: Use Witherable instead
Synopsis
- class Functor f => Filterable (f :: Type -> Type) where
- (<$?>) :: Filterable f => (a -> Maybe b) -> f a -> f b
- (<&?>) :: Filterable f => f a -> (a -> Maybe b) -> f b
- class (Traversable t, Filterable t) => Witherable (t :: Type -> Type) where
- ordNub :: (Witherable t, Ord a) => t a -> t a
- ordNubOn :: (Witherable t, Ord b) => (a -> b) -> t a -> t a
- hashNub :: (Witherable t, Eq a, Hashable a) => t a -> t a
- hashNubOn :: (Witherable t, Eq b, Hashable b) => (a -> b) -> t a -> t a
- forMaybe :: (Witherable t, Applicative f) => t a -> (a -> f (Maybe b)) -> f (t b)
- class (FunctorWithIndex i t, Filterable t) => FilterableWithIndex i (t :: Type -> Type) | t -> i where
- class (TraversableWithIndex i t, Witherable t) => WitherableWithIndex i (t :: Type -> Type) | t -> i where
- type WitherLike (f :: Type -> Type) s t a b = (a -> f (Maybe b)) -> s -> f t
- type Wither s t a b = forall (f :: Type -> Type). Applicative f => WitherLike f s t a b
- type WitherLike' (f :: Type -> Type) s a = WitherLike f s s a a
- type Wither' s a = forall (f :: Type -> Type). Applicative f => WitherLike' f s a
- type FilterLike (f :: Type -> Type) s t a b = WitherLike f s t a b
- type Filter s t a b = Wither s t a b
- type FilterLike' (f :: Type -> Type) s a = WitherLike' f s a
- type Filter' s a = Wither' s a
- witherOf :: FilterLike f s t a b -> (a -> f (Maybe b)) -> s -> f t
- forMaybeOf :: FilterLike f s t a b -> s -> (a -> f (Maybe b)) -> f t
- mapMaybeOf :: FilterLike Identity s t a b -> (a -> Maybe b) -> s -> t
- catMaybesOf :: FilterLike Identity s t (Maybe a) a -> s -> t
- filterAOf :: Functor f => FilterLike' f s a -> (a -> f Bool) -> s -> f s
- filterOf :: FilterLike' Identity s a -> (a -> Bool) -> s -> s
- ordNubOf :: Ord a => FilterLike' (State (Set a)) s a -> s -> s
- ordNubOnOf :: Ord b => FilterLike' (State (Set b)) s a -> (a -> b) -> s -> s
- hashNubOf :: (Eq a, Hashable a) => FilterLike' (State (HashSet a)) s a -> s -> s
- hashNubOnOf :: (Eq b, Hashable b) => FilterLike' (State (HashSet b)) s a -> (a -> b) -> s -> s
- cloneFilter :: FilterLike (Peat a b) s t a b -> Filter s t a b
- newtype Peat a b t = Peat {
- runPeat :: forall (f :: Type -> Type). Applicative f => (a -> f (Maybe b)) -> f t
- newtype WrappedFoldable (f :: Type -> Type) a = WrapFilterable {
- unwrapFoldable :: f a
Documentation
class Functor f => Filterable (f :: Type -> Type) where Source #
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:
Methods
mapMaybe :: (a -> Maybe b) -> f a -> f b Source #
Like mapMaybe
.
Instances
(<$?>) :: Filterable f => (a -> Maybe b) -> f a -> f b infixl 4 Source #
An infix alias for mapMaybe
. The name of the operator alludes
to <$>
, and has the same fixity.
Since: 0.3.1
(<&?>) :: Filterable f => f a -> (a -> Maybe b) -> f b infixl 1 Source #
class (Traversable t, Filterable t) => Witherable (t :: Type -> Type) where Source #
An enhancement of Traversable
with Filterable
A definition of wither
must satisfy the following laws:
- identity
wither
(Identity
. Just) ≡Identity
- composition
Compose
.fmap
(wither
f) .wither
g ≡wither
(Compose
.fmap
(wither
f) . g)
Parametricity implies the naturality law:
- naturality
t .
wither
f ≡wither
(t . f)Where
t
is an /applicative transformation/ in the sense described in theTraversable
documentation.
In the relation to superclasses, these should satisfy too:
- conservation
wither
(fmap
Just . f) =traverse
f- pure filter
wither
(Identity
. f) =Identity
.mapMaybe
f
See the Properties.md
and Laws.md
files in the git distribution for more
in-depth explanation about properties of Witherable
containers.
The laws and restrictions are enough to
constrain
to be uniquely determined as the following default implementation.wither
wither f = fmapcatMaybes
.traverse
f
If not to provide better-performing implementation,
it's not necessary to implement any one method of
Witherable
. For example, if a type constructor T
already has instances of Traversable
and Filterable
,
the next one line is sufficient to provide the Witherable T
instance.
instance Witherable T
Minimal complete definition
Nothing
Methods
wither :: Applicative f => (a -> f (Maybe b)) -> t a -> f (t b) Source #
witherM :: Monad m => (a -> m (Maybe b)) -> t a -> m (t b) Source #
Monadic variant of wither
. This may have more efficient implementation.
filterA :: Applicative f => (a -> f Bool) -> t a -> f (t a) Source #
witherMap :: Applicative m => (t b -> r) -> (a -> m (Maybe b)) -> t a -> m r Source #
Instances
Witherable ZipList Source # | |
Defined in Witherable Methods wither :: Applicative f => (a -> f (Maybe b)) -> ZipList a -> f (ZipList b) Source # witherM :: Monad m => (a -> m (Maybe b)) -> ZipList a -> m (ZipList b) Source # filterA :: Applicative f => (a -> f Bool) -> ZipList a -> f (ZipList a) Source # witherMap :: Applicative m => (ZipList b -> r) -> (a -> m (Maybe b)) -> ZipList a -> m r Source # | |
Witherable IntMap Source # | |
Defined in Witherable Methods wither :: Applicative f => (a -> f (Maybe b)) -> IntMap a -> f (IntMap b) Source # witherM :: Monad m => (a -> m (Maybe b)) -> IntMap a -> m (IntMap b) Source # filterA :: Applicative f => (a -> f Bool) -> IntMap a -> f (IntMap a) Source # witherMap :: Applicative m => (IntMap b -> r) -> (a -> m (Maybe b)) -> IntMap a -> m r Source # | |
Witherable Seq Source # | |
Defined in Witherable Methods wither :: Applicative f => (a -> f (Maybe b)) -> Seq a -> f (Seq b) Source # witherM :: Monad m => (a -> m (Maybe b)) -> Seq a -> m (Seq b) Source # filterA :: Applicative f => (a -> f Bool) -> Seq a -> f (Seq a) Source # witherMap :: Applicative m => (Seq b -> r) -> (a -> m (Maybe b)) -> Seq a -> m r Source # | |
Witherable Vector Source # | |
Defined in Witherable Methods wither :: Applicative f => (a -> f (Maybe b)) -> Vector a -> f (Vector b) Source # witherM :: Monad m => (a -> m (Maybe b)) -> Vector a -> m (Vector b) Source # filterA :: Applicative f => (a -> f Bool) -> Vector a -> f (Vector a) Source # witherMap :: Applicative m => (Vector b -> r) -> (a -> m (Maybe b)) -> Vector a -> m r Source # | |
Witherable Maybe Source # | |
Defined in Witherable Methods wither :: Applicative f => (a -> f (Maybe b)) -> Maybe a -> f (Maybe b) Source # witherM :: Monad m => (a -> m (Maybe b)) -> Maybe a -> m (Maybe b) Source # filterA :: Applicative f => (a -> f Bool) -> Maybe a -> f (Maybe a) Source # witherMap :: Applicative m => (Maybe b -> r) -> (a -> m (Maybe b)) -> Maybe a -> m r Source # | |
Witherable [] Source # | Methods are good consumers for fusion. |
Defined in Witherable | |
Monoid e => Witherable (Either e) Source # | |
Defined in Witherable Methods wither :: Applicative f => (a -> f (Maybe b)) -> Either e a -> f (Either e b) Source # witherM :: Monad m => (a -> m (Maybe b)) -> Either e a -> m (Either e b) Source # filterA :: Applicative f => (a -> f Bool) -> Either e a -> f (Either e a) Source # witherMap :: Applicative m => (Either e b -> r) -> (a -> m (Maybe b)) -> Either e a -> m r Source # | |
Witherable (Proxy :: Type -> Type) Source # | |
Defined in Witherable Methods wither :: Applicative f => (a -> f (Maybe b)) -> Proxy a -> f (Proxy b) Source # witherM :: Monad m => (a -> m (Maybe b)) -> Proxy a -> m (Proxy b) Source # filterA :: Applicative f => (a -> f Bool) -> Proxy a -> f (Proxy a) Source # witherMap :: Applicative m => (Proxy b -> r) -> (a -> m (Maybe b)) -> Proxy a -> m r Source # | |
Witherable (U1 :: Type -> Type) Source # | |
Defined in Witherable Methods wither :: Applicative f => (a -> f (Maybe b)) -> U1 a -> f (U1 b) Source # witherM :: Monad m => (a -> m (Maybe b)) -> U1 a -> m (U1 b) Source # filterA :: Applicative f => (a -> f Bool) -> U1 a -> f (U1 a) Source # witherMap :: Applicative m => (U1 b -> r) -> (a -> m (Maybe b)) -> U1 a -> m r Source # | |
Witherable (V1 :: Type -> Type) Source # | |
Defined in Witherable Methods wither :: Applicative f => (a -> f (Maybe b)) -> V1 a -> f (V1 b) Source # witherM :: Monad m => (a -> m (Maybe b)) -> V1 a -> m (V1 b) Source # filterA :: Applicative f => (a -> f Bool) -> V1 a -> f (V1 a) Source # witherMap :: Applicative m => (V1 b -> r) -> (a -> m (Maybe b)) -> V1 a -> m r Source # | |
Witherable (Map k) Source # | |
Defined in Witherable Methods wither :: Applicative f => (a -> f (Maybe b)) -> Map k a -> f (Map k b) Source # witherM :: Monad m => (a -> m (Maybe b)) -> Map k a -> m (Map k b) Source # filterA :: Applicative f => (a -> f Bool) -> Map k a -> f (Map k a) Source # witherMap :: Applicative m => (Map k b -> r) -> (a -> m (Maybe b)) -> Map k a -> m r Source # | |
Traversable t => Witherable (MaybeT t) Source # | |
Defined in Witherable Methods wither :: Applicative f => (a -> f (Maybe b)) -> MaybeT t a -> f (MaybeT t b) Source # witherM :: Monad m => (a -> m (Maybe b)) -> MaybeT t a -> m (MaybeT t b) Source # filterA :: Applicative f => (a -> f Bool) -> MaybeT t a -> f (MaybeT t a) Source # witherMap :: Applicative m => (MaybeT t b -> r) -> (a -> m (Maybe b)) -> MaybeT t a -> m r Source # | |
(Eq k, Hashable k) => Witherable (HashMap k) Source # | |
Defined in Witherable Methods wither :: Applicative f => (a -> f (Maybe b)) -> HashMap k a -> f (HashMap k b) Source # witherM :: Monad m => (a -> m (Maybe b)) -> HashMap k a -> m (HashMap k b) Source # filterA :: Applicative f => (a -> f Bool) -> HashMap k a -> f (HashMap k a) Source # witherMap :: Applicative m => (HashMap k b -> r) -> (a -> m (Maybe b)) -> HashMap k a -> m r Source # | |
(Alternative f, Traversable f) => Witherable (WrappedFoldable f) Source # | |
Defined in Witherable Methods wither :: Applicative f0 => (a -> f0 (Maybe b)) -> WrappedFoldable f a -> f0 (WrappedFoldable f b) Source # witherM :: Monad m => (a -> m (Maybe b)) -> WrappedFoldable f a -> m (WrappedFoldable f b) Source # filterA :: Applicative f0 => (a -> f0 Bool) -> WrappedFoldable f a -> f0 (WrappedFoldable f a) Source # witherMap :: Applicative m => (WrappedFoldable f b -> r) -> (a -> m (Maybe b)) -> WrappedFoldable f a -> m r Source # | |
Witherable (Const r :: Type -> Type) Source # | |
Defined in Witherable Methods wither :: Applicative f => (a -> f (Maybe b)) -> Const r a -> f (Const r b) Source # witherM :: Monad m => (a -> m (Maybe b)) -> Const r a -> m (Const r b) Source # filterA :: Applicative f => (a -> f Bool) -> Const r a -> f (Const r a) Source # witherMap :: Applicative m => (Const r b -> r0) -> (a -> m (Maybe b)) -> Const r a -> m r0 Source # | |
Witherable f => Witherable (Rec1 f) Source # | |
Defined in Witherable Methods wither :: Applicative f0 => (a -> f0 (Maybe b)) -> Rec1 f a -> f0 (Rec1 f b) Source # witherM :: Monad m => (a -> m (Maybe b)) -> Rec1 f a -> m (Rec1 f b) Source # filterA :: Applicative f0 => (a -> f0 Bool) -> Rec1 f a -> f0 (Rec1 f a) Source # witherMap :: Applicative m => (Rec1 f b -> r) -> (a -> m (Maybe b)) -> Rec1 f a -> m r Source # | |
Witherable t => Witherable (Backwards t) Source # | |
Defined in Witherable Methods wither :: Applicative f => (a -> f (Maybe b)) -> Backwards t a -> f (Backwards t b) Source # witherM :: Monad m => (a -> m (Maybe b)) -> Backwards t a -> m (Backwards t b) Source # filterA :: Applicative f => (a -> f Bool) -> Backwards t a -> f (Backwards t a) Source # witherMap :: Applicative m => (Backwards t b -> r) -> (a -> m (Maybe b)) -> Backwards t a -> m r Source # | |
Witherable f => Witherable (IdentityT f) Source # | |
Defined in Witherable Methods wither :: Applicative f0 => (a -> f0 (Maybe b)) -> IdentityT f a -> f0 (IdentityT f b) Source # witherM :: Monad m => (a -> m (Maybe b)) -> IdentityT f a -> m (IdentityT f b) Source # filterA :: Applicative f0 => (a -> f0 Bool) -> IdentityT f a -> f0 (IdentityT f a) Source # witherMap :: Applicative m => (IdentityT f b -> r) -> (a -> m (Maybe b)) -> IdentityT f a -> m r Source # | |
Witherable t => Witherable (Reverse t) Source # | Wither from right to left. |
Defined in Witherable Methods wither :: Applicative f => (a -> f (Maybe b)) -> Reverse t a -> f (Reverse t b) Source # witherM :: Monad m => (a -> m (Maybe b)) -> Reverse t a -> m (Reverse t b) Source # filterA :: Applicative f => (a -> f Bool) -> Reverse t a -> f (Reverse t a) Source # witherMap :: Applicative m => (Reverse t b -> r) -> (a -> m (Maybe b)) -> Reverse t a -> m r Source # | |
(Witherable f, Witherable g) => Witherable (Product f g) Source # | |
Defined in Witherable Methods wither :: Applicative f0 => (a -> f0 (Maybe b)) -> Product f g a -> f0 (Product f g b) Source # witherM :: Monad m => (a -> m (Maybe b)) -> Product f g a -> m (Product f g b) Source # filterA :: Applicative f0 => (a -> f0 Bool) -> Product f g a -> f0 (Product f g a) Source # witherMap :: Applicative m => (Product f g b -> r) -> (a -> m (Maybe b)) -> Product f g a -> m r Source # | |
(Witherable f, Witherable g) => Witherable (Sum f g) Source # | |
Defined in Witherable Methods wither :: Applicative f0 => (a -> f0 (Maybe b)) -> Sum f g a -> f0 (Sum f g b) Source # witherM :: Monad m => (a -> m (Maybe b)) -> Sum f g a -> m (Sum f g b) Source # filterA :: Applicative f0 => (a -> f0 Bool) -> Sum f g a -> f0 (Sum f g a) Source # witherMap :: Applicative m => (Sum f g b -> r) -> (a -> m (Maybe b)) -> Sum f g a -> m r Source # | |
(Witherable f, Witherable g) => Witherable (f :*: g) Source # | |
Defined in Witherable Methods wither :: Applicative f0 => (a -> f0 (Maybe b)) -> (f :*: g) a -> f0 ((f :*: g) b) Source # witherM :: Monad m => (a -> m (Maybe b)) -> (f :*: g) a -> m ((f :*: g) b) Source # filterA :: Applicative f0 => (a -> f0 Bool) -> (f :*: g) a -> f0 ((f :*: g) a) Source # witherMap :: Applicative m => ((f :*: g) b -> r) -> (a -> m (Maybe b)) -> (f :*: g) a -> m r Source # | |
(Witherable f, Witherable g) => Witherable (f :+: g) Source # | |
Defined in Witherable Methods wither :: Applicative f0 => (a -> f0 (Maybe b)) -> (f :+: g) a -> f0 ((f :+: g) b) Source # witherM :: Monad m => (a -> m (Maybe b)) -> (f :+: g) a -> m ((f :+: g) b) Source # filterA :: Applicative f0 => (a -> f0 Bool) -> (f :+: g) a -> f0 ((f :+: g) a) Source # witherMap :: Applicative m => ((f :+: g) b -> r) -> (a -> m (Maybe b)) -> (f :+: g) a -> m r Source # | |
Witherable (K1 i c :: Type -> Type) Source # | |
Defined in Witherable Methods wither :: Applicative f => (a -> f (Maybe b)) -> K1 i c a -> f (K1 i c b) Source # witherM :: Monad m => (a -> m (Maybe b)) -> K1 i c a -> m (K1 i c b) Source # filterA :: Applicative f => (a -> f Bool) -> K1 i c a -> f (K1 i c a) Source # witherMap :: Applicative m => (K1 i c b -> r) -> (a -> m (Maybe b)) -> K1 i c a -> m r Source # | |
(Traversable f, Witherable g) => Witherable (Compose f g) Source # | |
Defined in Witherable Methods wither :: Applicative f0 => (a -> f0 (Maybe b)) -> Compose f g a -> f0 (Compose f g b) Source # witherM :: Monad m => (a -> m (Maybe b)) -> Compose f g a -> m (Compose f g b) Source # filterA :: Applicative f0 => (a -> f0 Bool) -> Compose f g a -> f0 (Compose f g a) Source # witherMap :: Applicative m => (Compose f g b -> r) -> (a -> m (Maybe b)) -> Compose f g a -> m r Source # | |
(Traversable f, Witherable g) => Witherable (f :.: g) Source # | |
Defined in Witherable Methods wither :: Applicative f0 => (a -> f0 (Maybe b)) -> (f :.: g) a -> f0 ((f :.: g) b) Source # witherM :: Monad m => (a -> m (Maybe b)) -> (f :.: g) a -> m ((f :.: g) b) Source # filterA :: Applicative f0 => (a -> f0 Bool) -> (f :.: g) a -> f0 ((f :.: g) a) Source # witherMap :: Applicative m => ((f :.: g) b -> r) -> (a -> m (Maybe b)) -> (f :.: g) a -> m r Source # | |
Witherable f => Witherable (M1 i c f) Source # | |
Defined in Witherable Methods wither :: Applicative f0 => (a -> f0 (Maybe b)) -> M1 i c f a -> f0 (M1 i c f b) Source # witherM :: Monad m => (a -> m (Maybe b)) -> M1 i c f a -> m (M1 i c f b) Source # filterA :: Applicative f0 => (a -> f0 Bool) -> M1 i c f a -> f0 (M1 i c f a) Source # witherMap :: Applicative m => (M1 i c f b -> r) -> (a -> m (Maybe b)) -> M1 i c f a -> m r Source # |
ordNub :: (Witherable t, Ord a) => t a -> t a Source #
ordNubOn :: (Witherable t, Ord b) => (a -> b) -> t a -> t a Source #
hashNub :: (Witherable t, Eq a, Hashable a) => t a -> t a Source #
Removes duplicate elements from a list, keeping only the first
occurrence. This is usually faster than ordNub
, especially for
things that have a slow comparison (like String
).
>>>
hashNub [3,2,1,3,2,1]
[3,2,1]
hashNubOn :: (Witherable t, Eq b, Hashable b) => (a -> b) -> t a -> t a Source #
forMaybe :: (Witherable t, Applicative f) => t a -> (a -> f (Maybe b)) -> f (t b) Source #
Indexed variants
class (FunctorWithIndex i t, Filterable t) => FilterableWithIndex i (t :: Type -> Type) | t -> i where Source #
Indexed variant of Filterable
.
Minimal complete definition
Nothing
Instances
class (TraversableWithIndex i t, Witherable t) => WitherableWithIndex i (t :: Type -> Type) | t -> i where Source #
Indexed variant of Witherable
.
Minimal complete definition
Nothing
Methods
iwither :: Applicative f => (i -> a -> f (Maybe b)) -> t a -> f (t b) Source #
iwitherM :: Monad m => (i -> a -> m (Maybe b)) -> t a -> m (t b) Source #
Monadic variant of wither
. This may have more efficient implementation.
ifilterA :: Applicative f => (i -> a -> f Bool) -> t a -> f (t a) Source #
Instances
WitherableWithIndex () Maybe Source # | |
WitherableWithIndex Int ZipList Source # | |
WitherableWithIndex Int IntMap Source # | |
WitherableWithIndex Int Seq Source # | |
WitherableWithIndex Int Vector Source # | |
WitherableWithIndex Int [] Source # | |
WitherableWithIndex Void (Proxy :: Type -> Type) Source # | |
WitherableWithIndex k (Map k) Source # | |
(Eq k, Hashable k) => WitherableWithIndex k (HashMap k) Source # | |
Defined in Witherable | |
WitherableWithIndex i t => WitherableWithIndex i (Backwards t) Source # | |
Defined in Witherable | |
WitherableWithIndex i f => WitherableWithIndex i (IdentityT f) Source # | |
Defined in Witherable | |
WitherableWithIndex i t => WitherableWithIndex i (Reverse t) Source # | Wither from right to left. |
Defined in Witherable | |
(WitherableWithIndex i f, WitherableWithIndex j g) => WitherableWithIndex (Either i j) (Product f g) Source # | |
Defined in Witherable Methods iwither :: Applicative f0 => (Either i j -> a -> f0 (Maybe b)) -> Product f g a -> f0 (Product f g b) Source # iwitherM :: Monad m => (Either i j -> a -> m (Maybe b)) -> Product f g a -> m (Product f g b) Source # ifilterA :: Applicative f0 => (Either i j -> a -> f0 Bool) -> Product f g a -> f0 (Product f g a) Source # | |
(WitherableWithIndex i f, WitherableWithIndex j g) => WitherableWithIndex (Either i j) (Sum f g) Source # | |
Defined in Witherable Methods iwither :: Applicative f0 => (Either i j -> a -> f0 (Maybe b)) -> Sum f g a -> f0 (Sum f g b) Source # iwitherM :: Monad m => (Either i j -> a -> m (Maybe b)) -> Sum f g a -> m (Sum f g b) Source # ifilterA :: Applicative f0 => (Either i j -> a -> f0 Bool) -> Sum f g a -> f0 (Sum f g a) Source # | |
(TraversableWithIndex i f, WitherableWithIndex j g) => WitherableWithIndex (i, j) (Compose f g) Source # | |
Defined in Witherable Methods iwither :: Applicative f0 => ((i, j) -> a -> f0 (Maybe b)) -> Compose f g a -> f0 (Compose f g b) Source # iwitherM :: Monad m => ((i, j) -> a -> m (Maybe b)) -> Compose f g a -> m (Compose f g b) Source # ifilterA :: Applicative f0 => ((i, j) -> a -> f0 Bool) -> Compose f g a -> f0 (Compose f g a) Source # |
Generalization
type WitherLike (f :: Type -> Type) s t a b = (a -> f (Maybe b)) -> s -> f t Source #
This type allows combinators to take a Filter
specializing the parameter f
.
type Wither s t a b = forall (f :: Type -> Type). Applicative f => WitherLike f s t a b Source #
type WitherLike' (f :: Type -> Type) s a = WitherLike f s s a a Source #
A simple WitherLike
.
type Wither' s a = forall (f :: Type -> Type). Applicative f => WitherLike' f s a Source #
A simple Wither
.
type FilterLike (f :: Type -> Type) s t a b = WitherLike f s t a b Source #
type FilterLike' (f :: Type -> Type) s a = WitherLike' f s a Source #
witherOf :: FilterLike f s t a b -> (a -> f (Maybe b)) -> s -> f t Source #
witherOf
is actually id
, but left for consistency.
forMaybeOf :: FilterLike f s t a b -> s -> (a -> f (Maybe b)) -> f t Source #
forMaybeOf
≡flip
mapMaybeOf :: FilterLike Identity s t a b -> (a -> Maybe b) -> s -> t Source #
mapMaybe
through a filter.
catMaybesOf :: FilterLike Identity s t (Maybe a) a -> s -> t Source #
catMaybes
through a filter.
filterAOf :: Functor f => FilterLike' f s a -> (a -> f Bool) -> s -> f s Source #
filterA
through a filter.
filterOf :: FilterLike' Identity s a -> (a -> Bool) -> s -> s Source #
Filter each element of a structure targeted by a Filter
.
ordNubOf :: Ord a => FilterLike' (State (Set a)) s a -> s -> s Source #
Remove the duplicate elements through a filter.
ordNubOnOf :: Ord b => FilterLike' (State (Set b)) s a -> (a -> b) -> s -> s Source #
Remove the duplicate elements through a filter.
hashNubOf :: (Eq a, Hashable a) => FilterLike' (State (HashSet a)) s a -> s -> s Source #
Remove the duplicate elements through a filter.
It is often faster than ordNubOf
, especially when the comparison is expensive.
hashNubOnOf :: (Eq b, Hashable b) => FilterLike' (State (HashSet b)) s a -> (a -> b) -> s -> s Source #
Remove the duplicate elements through a filter.
Cloning
cloneFilter :: FilterLike (Peat a b) s t a b -> Filter s t a b Source #
Reconstitute a Filter
from its monomorphic form.
This is used to characterize and clone a Filter
.
Since FilterLike (Peat a b) s t a b
is monomorphic, it can be used to store a filter in a container.
Constructors
Peat | |
Fields
|
Wrapper
newtype WrappedFoldable (f :: Type -> Type) a Source #
Constructors
WrapFilterable | |
Fields
|
Instances
FoldableWithIndex i f => FoldableWithIndex i (WrappedFoldable f) Source # | |
Defined in Witherable Methods ifoldMap :: Monoid m => (i -> a -> m) -> WrappedFoldable f a -> m ifoldMap' :: Monoid m => (i -> a -> m) -> WrappedFoldable f a -> m ifoldr :: (i -> a -> b -> b) -> b -> WrappedFoldable f a -> b ifoldl :: (i -> b -> a -> b) -> b -> WrappedFoldable f a -> b ifoldr' :: (i -> a -> b -> b) -> b -> WrappedFoldable f a -> b ifoldl' :: (i -> b -> a -> b) -> b -> WrappedFoldable f a -> b | |
FunctorWithIndex i f => FunctorWithIndex i (WrappedFoldable f) Source # | |
Defined in Witherable Methods imap :: (i -> a -> b) -> WrappedFoldable f a -> WrappedFoldable f b | |
TraversableWithIndex i f => TraversableWithIndex i (WrappedFoldable f) Source # | |
Defined in Witherable Methods itraverse :: Applicative f0 => (i -> a -> f0 b) -> WrappedFoldable f a -> f0 (WrappedFoldable f b) | |
(FunctorWithIndex i f, FoldableWithIndex i f, Alternative f) => FilterableWithIndex i (WrappedFoldable f) Source # | |
Defined in Witherable Methods imapMaybe :: (i -> a -> Maybe b) -> WrappedFoldable f a -> WrappedFoldable f b Source # ifilter :: (i -> a -> Bool) -> WrappedFoldable f a -> WrappedFoldable f a Source # | |
Foldable f => Foldable (WrappedFoldable f) Source # | |
Defined in Witherable Methods fold :: Monoid m => WrappedFoldable f m -> m foldMap :: Monoid m => (a -> m) -> WrappedFoldable f a -> m foldMap' :: Monoid m => (a -> m) -> WrappedFoldable f a -> m foldr :: (a -> b -> b) -> b -> WrappedFoldable f a -> b foldr' :: (a -> b -> b) -> b -> WrappedFoldable f a -> b foldl :: (b -> a -> b) -> b -> WrappedFoldable f a -> b foldl' :: (b -> a -> b) -> b -> WrappedFoldable f a -> b foldr1 :: (a -> a -> a) -> WrappedFoldable f a -> a foldl1 :: (a -> a -> a) -> WrappedFoldable f a -> a toList :: WrappedFoldable f a -> [a] null :: WrappedFoldable f a -> Bool length :: WrappedFoldable f a -> Int elem :: Eq a => a -> WrappedFoldable f a -> Bool maximum :: Ord a => WrappedFoldable f a -> a minimum :: Ord a => WrappedFoldable f a -> a sum :: Num a => WrappedFoldable f a -> a product :: Num a => WrappedFoldable f a -> a | |
Traversable f => Traversable (WrappedFoldable f) Source # | |
Defined in Witherable Methods traverse :: Applicative f0 => (a -> f0 b) -> WrappedFoldable f a -> f0 (WrappedFoldable f b) sequenceA :: Applicative f0 => WrappedFoldable f (f0 a) -> f0 (WrappedFoldable f a) mapM :: Monad m => (a -> m b) -> WrappedFoldable f a -> m (WrappedFoldable f b) sequence :: Monad m => WrappedFoldable f (m a) -> m (WrappedFoldable f a) | |
Alternative f => Alternative (WrappedFoldable f) Source # | |
Defined in Witherable Methods empty :: WrappedFoldable f a (<|>) :: WrappedFoldable f a -> WrappedFoldable f a -> WrappedFoldable f a some :: WrappedFoldable f a -> WrappedFoldable f [a] many :: WrappedFoldable f a -> WrappedFoldable f [a] | |
Applicative f => Applicative (WrappedFoldable f) Source # | |
Defined in Witherable Methods pure :: a -> WrappedFoldable f a (<*>) :: WrappedFoldable f (a -> b) -> WrappedFoldable f a -> WrappedFoldable f b liftA2 :: (a -> b -> c) -> WrappedFoldable f a -> WrappedFoldable f b -> WrappedFoldable f c (*>) :: WrappedFoldable f a -> WrappedFoldable f b -> WrappedFoldable f b (<*) :: WrappedFoldable f a -> WrappedFoldable f b -> WrappedFoldable f a | |
Functor f => Functor (WrappedFoldable f) Source # | |
Defined in Witherable Methods fmap :: (a -> b) -> WrappedFoldable f a -> WrappedFoldable f b (<$) :: a -> WrappedFoldable f b -> WrappedFoldable f a | |
(Foldable f, Alternative f) => Filterable (WrappedFoldable f) Source # | |
Defined in Witherable Methods mapMaybe :: (a -> Maybe b) -> WrappedFoldable f a -> WrappedFoldable f b Source # catMaybes :: WrappedFoldable f (Maybe a) -> WrappedFoldable f a Source # filter :: (a -> Bool) -> WrappedFoldable f a -> WrappedFoldable f a Source # | |
(Alternative f, Traversable f) => Witherable (WrappedFoldable f) Source # | |
Defined in Witherable Methods wither :: Applicative f0 => (a -> f0 (Maybe b)) -> WrappedFoldable f a -> f0 (WrappedFoldable f b) Source # witherM :: Monad m => (a -> m (Maybe b)) -> WrappedFoldable f a -> m (WrappedFoldable f b) Source # filterA :: Applicative f0 => (a -> f0 Bool) -> WrappedFoldable f a -> f0 (WrappedFoldable f a) Source # witherMap :: Applicative m => (WrappedFoldable f b -> r) -> (a -> m (Maybe b)) -> WrappedFoldable f a -> m r Source # |