filtrable-0.1.1.0: Class of filtrable containers

Safe HaskellSafe
LanguageHaskell2010

Data.Filtrable

Synopsis

Documentation

class Functor f => Filtrable f where Source #

Laws:

Laws if Foldable f:

Minimal complete definition

mapMaybe | catMaybes

Methods

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

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

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

mapMaybeA :: (Traversable f, Applicative p) => (a -> p (Maybe b)) -> f a -> p (f b) Source #

filterA :: (Traversable f, Applicative p) => (a -> p Bool) -> f a -> p (f a) Source #

mapEither :: (a -> Either b c) -> f a -> (f b, f c) Source #

mapEitherA :: (Traversable f, Applicative p) => (a -> p (Either b c)) -> f a -> p (f b, f c) Source #

partitionEithers :: f (Either a b) -> (f a, f b) Source #

Instances

Filtrable [] Source # 

Methods

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

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

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

mapMaybeA :: (Traversable [], Applicative p) => (a -> p (Maybe b)) -> [a] -> p [b] Source #

filterA :: (Traversable [], Applicative p) => (a -> p Bool) -> [a] -> p [a] Source #

mapEither :: (a -> Either b c) -> [a] -> ([b], [c]) Source #

mapEitherA :: (Traversable [], Applicative p) => (a -> p (Either b c)) -> [a] -> p ([b], [c]) Source #

partitionEithers :: [Either a b] -> ([a], [b]) Source #

Filtrable Maybe Source # 

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 #

mapMaybeA :: (Traversable Maybe, Applicative p) => (a -> p (Maybe b)) -> Maybe a -> p (Maybe b) Source #

filterA :: (Traversable Maybe, Applicative p) => (a -> p Bool) -> Maybe a -> p (Maybe a) Source #

mapEither :: (a -> Either b c) -> Maybe a -> (Maybe b, Maybe c) Source #

mapEitherA :: (Traversable Maybe, Applicative p) => (a -> p (Either b c)) -> Maybe a -> p (Maybe b, Maybe c) Source #

partitionEithers :: Maybe (Either a b) -> (Maybe a, Maybe b) Source #

Filtrable (Proxy *) Source # 

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 #

mapMaybeA :: (Traversable (Proxy *), Applicative p) => (a -> p (Maybe b)) -> Proxy * a -> p (Proxy * b) Source #

filterA :: (Traversable (Proxy *), Applicative p) => (a -> p Bool) -> Proxy * a -> p (Proxy * a) Source #

mapEither :: (a -> Either b c) -> Proxy * a -> (Proxy * b, Proxy * c) Source #

mapEitherA :: (Traversable (Proxy *), Applicative p) => (a -> p (Either b c)) -> Proxy * a -> p (Proxy * b, Proxy * c) Source #

partitionEithers :: Proxy * (Either a b) -> (Proxy * a, Proxy * b) Source #

Filtrable (Const * a) Source # 

Methods

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

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

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

mapMaybeA :: (Traversable (Const * a), Applicative p) => (a -> p (Maybe b)) -> Const * a a -> p (Const * a b) Source #

filterA :: (Traversable (Const * a), Applicative p) => (a -> p Bool) -> Const * a a -> p (Const * a a) Source #

mapEither :: (a -> Either b c) -> Const * a a -> (Const * a b, Const * a c) Source #

mapEitherA :: (Traversable (Const * a), Applicative p) => (a -> p (Either b c)) -> Const * a a -> p (Const * a b, Const * a c) Source #

partitionEithers :: Const * a (Either a b) -> (Const * a a, Const * a b) Source #