witherable-0.3.4: filterable traversable

Copyright(c) Fumiaki Kinoshita 2015
LicenseBSD3
MaintainerFumiaki Kinoshita <fumiexcel@gmail.com>
Stabilityprovisional
Portabilitynon-portable
Safe HaskellTrustworthy
LanguageHaskell2010

Data.Witherable

Contents

Description

 
Synopsis

Documentation

class Functor f => Filterable f 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:

conservation
mapMaybe (Just . f) ≡ fmap f
composition
mapMaybe f . mapMaybe g ≡ mapMaybe (f <=< g)

Minimal complete definition

mapMaybe | catMaybes

Methods

mapMaybe :: (a -> Maybe b) -> f a -> f b Source #

Like mapMaybe.

catMaybes :: f (Maybe a) -> f a Source #

filter :: (a -> Bool) -> f a -> f a Source #

Filterable f . Filterable g ≡ filter (liftA2 (&&) f g)
Instances
Filterable [] Source # 
Instance details

Defined in Data.Witherable

Methods

mapMaybe :: (a -> Maybe b) -> [a] -> [b] Source #

catMaybes :: [Maybe a] -> [a] Source #

filter :: (a -> Bool) -> [a] -> [a] Source #

Filterable Maybe Source # 
Instance details

Defined in Data.Witherable

Methods

mapMaybe :: (a -> Maybe b) -> Maybe a -> Maybe b Source #

catMaybes :: Maybe (Maybe a) -> Maybe a Source #

filter :: (a -> Bool) -> Maybe a -> Maybe a Source #

Filterable IntMap Source # 
Instance details

Defined in Data.Witherable

Methods

mapMaybe :: (a -> Maybe b) -> IntMap a -> IntMap b Source #

catMaybes :: IntMap (Maybe a) -> IntMap a Source #

filter :: (a -> Bool) -> IntMap a -> IntMap a Source #

Filterable Seq Source # 
Instance details

Defined in Data.Witherable

Methods

mapMaybe :: (a -> Maybe b) -> Seq a -> Seq b Source #

catMaybes :: Seq (Maybe a) -> Seq a Source #

filter :: (a -> Bool) -> Seq a -> Seq a Source #

Filterable Vector Source # 
Instance details

Defined in Data.Witherable

Methods

mapMaybe :: (a -> Maybe b) -> Vector a -> Vector b Source #

catMaybes :: Vector (Maybe a) -> Vector a Source #

filter :: (a -> Bool) -> Vector a -> Vector a Source #

Monoid e => Filterable (Either e) Source # 
Instance details

Defined in Data.Witherable

Methods

mapMaybe :: (a -> Maybe b) -> Either e a -> Either e b Source #

catMaybes :: Either e (Maybe a) -> Either e a Source #

filter :: (a -> Bool) -> Either e a -> Either e a Source #

(Eq k, Hashable k) => Filterable (HashMap k) Source # 
Instance details

Defined in Data.Witherable

Methods

mapMaybe :: (a -> Maybe b) -> HashMap k a -> HashMap k b Source #

catMaybes :: HashMap k (Maybe a) -> HashMap k a Source #

filter :: (a -> Bool) -> HashMap k a -> HashMap k a Source #

Filterable (Map k) Source # 
Instance details

Defined in Data.Witherable

Methods

mapMaybe :: (a -> Maybe b) -> Map k a -> Map k b Source #

catMaybes :: Map k (Maybe a) -> Map k a Source #

filter :: (a -> Bool) -> Map k a -> Map k a Source #

Filterable (Proxy :: Type -> Type) Source # 
Instance details

Defined in Data.Witherable

Methods

mapMaybe :: (a -> Maybe b) -> Proxy a -> Proxy b Source #

catMaybes :: Proxy (Maybe a) -> Proxy a Source #

filter :: (a -> Bool) -> Proxy a -> Proxy a Source #

Functor f => Filterable (MaybeT f) Source # 
Instance details

Defined in Data.Witherable

Methods

mapMaybe :: (a -> Maybe b) -> MaybeT f a -> MaybeT f b Source #

catMaybes :: MaybeT f (Maybe a) -> MaybeT f a Source #

filter :: (a -> Bool) -> MaybeT f a -> MaybeT f a Source #

Filterable (MonoidalMap k) Source # 
Instance details

Defined in Data.Witherable

Methods

mapMaybe :: (a -> Maybe b) -> MonoidalMap k a -> MonoidalMap k b Source #

catMaybes :: MonoidalMap k (Maybe a) -> MonoidalMap k a Source #

filter :: (a -> Bool) -> MonoidalMap k a -> MonoidalMap k a Source #

(Foldable f, Alternative f) => Filterable (WrappedFoldable f) Source # 
Instance details

Defined in Data.Witherable

Filterable (Const r :: Type -> Type) Source # 
Instance details

Defined in Data.Witherable

Methods

mapMaybe :: (a -> Maybe b) -> Const r a -> Const r b Source #

catMaybes :: Const r (Maybe a) -> Const r a Source #

filter :: (a -> Bool) -> Const r a -> Const r a Source #

Filterable f => Filterable (IdentityT f) Source # 
Instance details

Defined in Data.Witherable

Methods

mapMaybe :: (a -> Maybe b) -> IdentityT f a -> IdentityT f b Source #

catMaybes :: IdentityT f (Maybe a) -> IdentityT f a Source #

filter :: (a -> Bool) -> IdentityT f a -> IdentityT f a Source #

(Filterable f, Filterable g) => Filterable (Product f g) Source # 
Instance details

Defined in Data.Witherable

Methods

mapMaybe :: (a -> Maybe b) -> Product f g a -> Product f g b Source #

catMaybes :: Product f g (Maybe a) -> Product f g a Source #

filter :: (a -> Bool) -> Product f g a -> Product f g a Source #

(Filterable f, Filterable g) => Filterable (Sum f g) Source # 
Instance details

Defined in Data.Witherable

Methods

mapMaybe :: (a -> Maybe b) -> Sum f g a -> Sum f g b Source #

catMaybes :: Sum f g (Maybe a) -> Sum f g a Source #

filter :: (a -> Bool) -> Sum f g a -> Sum f g a Source #

(Functor f, Filterable g) => Filterable (Compose f g) Source # 
Instance details

Defined in Data.Witherable

Methods

mapMaybe :: (a -> Maybe b) -> Compose f g a -> Compose f g b Source #

catMaybes :: Compose f g (Maybe a) -> Compose f g a Source #

filter :: (a -> Bool) -> Compose f g a -> Compose f g a Source #

(<$?>) :: 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 #

Flipped version of <$?>, the Filterable version of <&>. It has the same fixity as <&>.

(<&?>) = flip mapMaybe

Since: 0.3.1

class (Traversable t, Filterable t) => Witherable t where Source #

An enhancement of Traversable with Filterable

A definition of wither must satisfy the following laws:

conservation
wither (fmap Just . f) ≡ traverse f
composition
Compose . fmap (wither f) . wither g ≡ wither (Compose . fmap (wither f) . g)

Parametricity implies the naturality law:

t . wither f ≡ wither (t . f)

Minimal complete definition

Nothing

Methods

wither :: Applicative f => (a -> f (Maybe b)) -> t a -> f (t b) Source #

Effectful mapMaybe.

wither (pure . f) ≡ pure . mapMaybe f

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 #

Instances
Witherable [] Source # 
Instance details

Defined in Data.Witherable

Methods

wither :: Applicative f => (a -> f (Maybe b)) -> [a] -> f [b] Source #

witherM :: Monad m => (a -> m (Maybe b)) -> [a] -> m [b] Source #

filterA :: Applicative f => (a -> f Bool) -> [a] -> f [a] Source #

Witherable Maybe Source # 
Instance details

Defined in Data.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 #

Witherable IntMap Source # 
Instance details

Defined in Data.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 #

Witherable Seq Source # 
Instance details

Defined in Data.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 #

Witherable Vector Source # 
Instance details

Defined in Data.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 #

Monoid e => Witherable (Either e) Source # 
Instance details

Defined in Data.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 #

(Eq k, Hashable k) => Witherable (HashMap k) Source # 
Instance details

Defined in Data.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 #

Witherable (Map k) Source # 
Instance details

Defined in Data.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 #

Witherable (Proxy :: Type -> Type) Source # 
Instance details

Defined in Data.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 #

Traversable t => Witherable (MaybeT t) Source # 
Instance details

Defined in Data.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 #

Witherable (MonoidalMap k) Source # 
Instance details

Defined in Data.Witherable

Methods

wither :: Applicative f => (a -> f (Maybe b)) -> MonoidalMap k a -> f (MonoidalMap k b) Source #

witherM :: Monad m => (a -> m (Maybe b)) -> MonoidalMap k a -> m (MonoidalMap k b) Source #

filterA :: Applicative f => (a -> f Bool) -> MonoidalMap k a -> f (MonoidalMap k a) Source #

(Alternative f, Traversable f) => Witherable (WrappedFoldable f) Source # 
Instance details

Defined in Data.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 #

Witherable (Const r :: Type -> Type) Source # 
Instance details

Defined in Data.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 #

Witherable f => Witherable (IdentityT f) Source # 
Instance details

Defined in Data.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 #

(Witherable f, Witherable g) => Witherable (Product f g) Source # 
Instance details

Defined in Data.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 #

(Witherable f, Witherable g) => Witherable (Sum f g) Source # 
Instance details

Defined in Data.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 #

(Traversable f, Witherable g) => Witherable (Compose f g) Source # 
Instance details

Defined in Data.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 #

ordNub :: (Witherable t, Ord a) => t a -> t a Source #

Removes duplicate elements from a list, keeping only the first occurrence. This is asymptotically faster than using nub from Data.List.

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).

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 | t -> i where Source #

Indexed variant of Filterable.

Minimal complete definition

Nothing

Methods

imapMaybe :: (i -> a -> Maybe b) -> t a -> t b Source #

ifilter :: (i -> a -> Bool) -> t a -> t a Source #

ifilter f . ifilter g ≡ ifilter (i -> liftA2 (&&) (f i) (g i))
Instances
FilterableWithIndex Int [] Source # 
Instance details

Defined in Data.Witherable

Methods

imapMaybe :: (Int -> a -> Maybe b) -> [a] -> [b] Source #

ifilter :: (Int -> a -> Bool) -> [a] -> [a] Source #

FilterableWithIndex Int IntMap Source # 
Instance details

Defined in Data.Witherable

Methods

imapMaybe :: (Int -> a -> Maybe b) -> IntMap a -> IntMap b Source #

ifilter :: (Int -> a -> Bool) -> IntMap a -> IntMap a Source #

FilterableWithIndex Int Seq Source # 
Instance details

Defined in Data.Witherable

Methods

imapMaybe :: (Int -> a -> Maybe b) -> Seq a -> Seq b Source #

ifilter :: (Int -> a -> Bool) -> Seq a -> Seq a Source #

FilterableWithIndex Int Vector Source # 
Instance details

Defined in Data.Witherable

Methods

imapMaybe :: (Int -> a -> Maybe b) -> Vector a -> Vector b Source #

ifilter :: (Int -> a -> Bool) -> Vector a -> Vector a Source #

FilterableWithIndex () Maybe Source # 
Instance details

Defined in Data.Witherable

Methods

imapMaybe :: (() -> a -> Maybe b) -> Maybe a -> Maybe b Source #

ifilter :: (() -> a -> Bool) -> Maybe a -> Maybe a Source #

(Eq k, Hashable k) => FilterableWithIndex k (HashMap k) Source # 
Instance details

Defined in Data.Witherable

Methods

imapMaybe :: (k -> a -> Maybe b) -> HashMap k a -> HashMap k b Source #

ifilter :: (k -> a -> Bool) -> HashMap k a -> HashMap k a Source #

FilterableWithIndex k (MonoidalMap k) Source # 
Instance details

Defined in Data.Witherable

Methods

imapMaybe :: (k -> a -> Maybe b) -> MonoidalMap k a -> MonoidalMap k b Source #

ifilter :: (k -> a -> Bool) -> MonoidalMap k a -> MonoidalMap k a Source #

FilterableWithIndex k (Map k) Source # 
Instance details

Defined in Data.Witherable

Methods

imapMaybe :: (k -> a -> Maybe b) -> Map k a -> Map k b Source #

ifilter :: (k -> a -> Bool) -> Map k a -> Map k a Source #

(FunctorWithIndex i f, FoldableWithIndex i f, Alternative f) => FilterableWithIndex i (WrappedFoldable f) Source # 
Instance details

Defined in Data.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 #

FilterableWithIndex Void (Proxy :: Type -> Type) Source # 
Instance details

Defined in Data.Witherable

Methods

imapMaybe :: (Void -> a -> Maybe b) -> Proxy a -> Proxy b Source #

ifilter :: (Void -> a -> Bool) -> Proxy a -> Proxy a Source #

FilterableWithIndex i f => FilterableWithIndex i (IdentityT f) Source # 
Instance details

Defined in Data.Witherable

Methods

imapMaybe :: (i -> a -> Maybe b) -> IdentityT f a -> IdentityT f b Source #

ifilter :: (i -> a -> Bool) -> IdentityT f a -> IdentityT f a Source #

(FilterableWithIndex i f, FilterableWithIndex j g) => FilterableWithIndex (Either i j) (Sum f g) Source # 
Instance details

Defined in Data.Witherable

Methods

imapMaybe :: (Either i j -> a -> Maybe b) -> Sum f g a -> Sum f g b Source #

ifilter :: (Either i j -> a -> Bool) -> Sum f g a -> Sum f g a Source #

(FilterableWithIndex i f, FilterableWithIndex j g) => FilterableWithIndex (Either i j) (Product f g) Source # 
Instance details

Defined in Data.Witherable

Methods

imapMaybe :: (Either i j -> a -> Maybe b) -> Product f g a -> Product f g b Source #

ifilter :: (Either i j -> a -> Bool) -> Product f g a -> Product f g a Source #

(FunctorWithIndex i f, FilterableWithIndex j g) => FilterableWithIndex (i, j) (Compose f g) Source # 
Instance details

Defined in Data.Witherable

Methods

imapMaybe :: ((i, j) -> a -> Maybe b) -> Compose f g a -> Compose f g b Source #

ifilter :: ((i, j) -> a -> Bool) -> Compose f g a -> Compose f g a Source #

class (TraversableWithIndex i t, Witherable t) => WitherableWithIndex i t | 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 #

Effectful imapMaybe.

iwither ( i -> pure . f i) ≡ pure . imapMaybe f

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 Int [] Source # 
Instance details

Defined in Data.Witherable

Methods

iwither :: Applicative f => (Int -> a -> f (Maybe b)) -> [a] -> f [b] Source #

iwitherM :: Monad m => (Int -> a -> m (Maybe b)) -> [a] -> m [b] Source #

ifilterA :: Applicative f => (Int -> a -> f Bool) -> [a] -> f [a] Source #

WitherableWithIndex Int IntMap Source # 
Instance details

Defined in Data.Witherable

Methods

iwither :: Applicative f => (Int -> a -> f (Maybe b)) -> IntMap a -> f (IntMap b) Source #

iwitherM :: Monad m => (Int -> a -> m (Maybe b)) -> IntMap a -> m (IntMap b) Source #

ifilterA :: Applicative f => (Int -> a -> f Bool) -> IntMap a -> f (IntMap a) Source #

WitherableWithIndex Int Seq Source # 
Instance details

Defined in Data.Witherable

Methods

iwither :: Applicative f => (Int -> a -> f (Maybe b)) -> Seq a -> f (Seq b) Source #

iwitherM :: Monad m => (Int -> a -> m (Maybe b)) -> Seq a -> m (Seq b) Source #

ifilterA :: Applicative f => (Int -> a -> f Bool) -> Seq a -> f (Seq a) Source #

WitherableWithIndex Int Vector Source # 
Instance details

Defined in Data.Witherable

Methods

iwither :: Applicative f => (Int -> a -> f (Maybe b)) -> Vector a -> f (Vector b) Source #

iwitherM :: Monad m => (Int -> a -> m (Maybe b)) -> Vector a -> m (Vector b) Source #

ifilterA :: Applicative f => (Int -> a -> f Bool) -> Vector a -> f (Vector a) Source #

WitherableWithIndex () Maybe Source # 
Instance details

Defined in Data.Witherable

Methods

iwither :: Applicative f => (() -> a -> f (Maybe b)) -> Maybe a -> f (Maybe b) Source #

iwitherM :: Monad m => (() -> a -> m (Maybe b)) -> Maybe a -> m (Maybe b) Source #

ifilterA :: Applicative f => (() -> a -> f Bool) -> Maybe a -> f (Maybe a) Source #

(Eq k, Hashable k) => WitherableWithIndex k (HashMap k) Source # 
Instance details

Defined in Data.Witherable

Methods

iwither :: Applicative f => (k -> a -> f (Maybe b)) -> HashMap k a -> f (HashMap k b) Source #

iwitherM :: Monad m => (k -> a -> m (Maybe b)) -> HashMap k a -> m (HashMap k b) Source #

ifilterA :: Applicative f => (k -> a -> f Bool) -> HashMap k a -> f (HashMap k a) Source #

WitherableWithIndex k (MonoidalMap k) Source # 
Instance details

Defined in Data.Witherable

Methods

iwither :: Applicative f => (k -> a -> f (Maybe b)) -> MonoidalMap k a -> f (MonoidalMap k b) Source #

iwitherM :: Monad m => (k -> a -> m (Maybe b)) -> MonoidalMap k a -> m (MonoidalMap k b) Source #

ifilterA :: Applicative f => (k -> a -> f Bool) -> MonoidalMap k a -> f (MonoidalMap k a) Source #

WitherableWithIndex k (Map k) Source # 
Instance details

Defined in Data.Witherable

Methods

iwither :: Applicative f => (k -> a -> f (Maybe b)) -> Map k a -> f (Map k b) Source #

iwitherM :: Monad m => (k -> a -> m (Maybe b)) -> Map k a -> m (Map k b) Source #

ifilterA :: Applicative f => (k -> a -> f Bool) -> Map k a -> f (Map k a) Source #

WitherableWithIndex Void (Proxy :: Type -> Type) Source # 
Instance details

Defined in Data.Witherable

Methods

iwither :: Applicative f => (Void -> a -> f (Maybe b)) -> Proxy a -> f (Proxy b) Source #

iwitherM :: Monad m => (Void -> a -> m (Maybe b)) -> Proxy a -> m (Proxy b) Source #

ifilterA :: Applicative f => (Void -> a -> f Bool) -> Proxy a -> f (Proxy a) Source #

WitherableWithIndex i f => WitherableWithIndex i (IdentityT f) Source # 
Instance details

Defined in Data.Witherable

Methods

iwither :: Applicative f0 => (i -> a -> f0 (Maybe b)) -> IdentityT f a -> f0 (IdentityT f b) Source #

iwitherM :: Monad m => (i -> a -> m (Maybe b)) -> IdentityT f a -> m (IdentityT f b) Source #

ifilterA :: Applicative f0 => (i -> a -> f0 Bool) -> IdentityT f a -> f0 (IdentityT f a) Source #

(WitherableWithIndex i f, WitherableWithIndex j g) => WitherableWithIndex (Either i j) (Sum f g) Source # 
Instance details

Defined in Data.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 #

(WitherableWithIndex i f, WitherableWithIndex j g) => WitherableWithIndex (Either i j) (Product f g) Source # 
Instance details

Defined in Data.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 #

(TraversableWithIndex i f, WitherableWithIndex j g) => WitherableWithIndex (i, j) (Compose f g) Source # 
Instance details

Defined in Data.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 FilterLike f 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 Filter s t a b = forall f. Applicative f => FilterLike f s t a b Source #

A Filter is like a Traversal, but you can also remove targets.

type FilterLike' f s a = FilterLike f s s a a Source #

A simple FilterLike.

type Filter' s a = forall f. Applicative f => FilterLike' f s a Source #

A simple Filter.

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 #

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.

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.

Cloning

cloneFilter :: FilterLike (Peat a b) s t a b -> Filter s t a b Source #

Reconstitute a Filter from its monomorphic form.

newtype Peat a b t Source #

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

Instances
Functor (Peat a b) Source # 
Instance details

Defined in Data.Witherable

Methods

fmap :: (a0 -> b0) -> Peat a b a0 -> Peat a b b0 #

(<$) :: a0 -> Peat a b b0 -> Peat a b a0 #

Applicative (Peat a b) Source # 
Instance details

Defined in Data.Witherable

Methods

pure :: a0 -> Peat a b a0 #

(<*>) :: Peat a b (a0 -> b0) -> Peat a b a0 -> Peat a b b0 #

liftA2 :: (a0 -> b0 -> c) -> Peat a b a0 -> Peat a b b0 -> Peat a b c #

(*>) :: Peat a b a0 -> Peat a b b0 -> Peat a b b0 #

(<*) :: Peat a b a0 -> Peat a b b0 -> Peat a b a0 #

Wrapper

newtype WrappedFoldable f a Source #

Constructors

WrapFilterable 

Fields

Instances
FunctorWithIndex i f => FunctorWithIndex i (WrappedFoldable f) Source # 
Instance details

Defined in Data.Witherable

Methods

imap :: (i -> a -> b) -> WrappedFoldable f a -> WrappedFoldable f b #

imapped :: IndexedSetter i (WrappedFoldable f a) (WrappedFoldable f b) a b #

FoldableWithIndex i f => FoldableWithIndex i (WrappedFoldable f) Source # 
Instance details

Defined in Data.Witherable

Methods

ifoldMap :: Monoid m => (i -> a -> m) -> WrappedFoldable f a -> m #

ifolded :: IndexedFold i (WrappedFoldable f a) a #

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 #

TraversableWithIndex i f => TraversableWithIndex i (WrappedFoldable f) Source # 
Instance details

Defined in Data.Witherable

Methods

itraverse :: Applicative f0 => (i -> a -> f0 b) -> WrappedFoldable f a -> f0 (WrappedFoldable f b) #

itraversed :: IndexedTraversal i (WrappedFoldable f a) (WrappedFoldable f b) a b #

(FunctorWithIndex i f, FoldableWithIndex i f, Alternative f) => FilterableWithIndex i (WrappedFoldable f) Source # 
Instance details

Defined in Data.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 #

Functor f => Functor (WrappedFoldable f) Source # 
Instance details

Defined in Data.Witherable

Methods

fmap :: (a -> b) -> WrappedFoldable f a -> WrappedFoldable f b #

(<$) :: a -> WrappedFoldable f b -> WrappedFoldable f a #

Applicative f => Applicative (WrappedFoldable f) Source # 
Instance details

Defined in Data.Witherable

Foldable f => Foldable (WrappedFoldable f) Source # 
Instance details

Defined in Data.Witherable

Methods

fold :: Monoid m => WrappedFoldable f m -> 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 # 
Instance details

Defined in Data.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 # 
Instance details

Defined in Data.Witherable

(Alternative f, Traversable f) => Witherable (WrappedFoldable f) Source # 
Instance details

Defined in Data.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 #

(Foldable f, Alternative f) => Filterable (WrappedFoldable f) Source # 
Instance details

Defined in Data.Witherable