keys-3.10.2: Keyed functors and containers

Safe HaskellTrustworthy
LanguageHaskell98

Data.Key

Contents

Synopsis

Keys

type family Key f Source

Instances

type Key [] = Int 
type Key Maybe = () 
type Key Identity = () 
type Key IntMap = Int 
type Key Tree = Seq Int 
type Key Seq = Int 
type Key NonEmpty = Int 
type Key ((->) a) = a 
type Key ((,) k) = k 
type Key (Array i) = i 
type Key (IdentityT m) = Key m 
type Key (Map k) = k 
type Key (Cofree f) = Seq (Key f) 
type Key (Free f) = Seq (Key f) 
type Key (HashMap k) = k 
type Key (Coproduct f g) = (Key f, Key g) 
type Key (TracedT s w) = (s, Key w) 
type Key (ReaderT e m) = (e, Key m) 
type Key (Compose f g) = (Key f, Key g) 
type Key (Product f g) = Either (Key f) (Key g) 

Keyed functors

class Functor f => Keyed f where Source

Methods

mapWithKey :: (Key f -> a -> b) -> f a -> f b Source

Instances

Keyed [] 
Keyed Maybe 
Keyed Identity 
Keyed IntMap 
Keyed Tree 
Keyed Seq 
Keyed NonEmpty 
Keyed ((->) a) 
Keyed ((,) k) 
Ix i => Keyed (Array i) 
Keyed m => Keyed (IdentityT m) 
Keyed (Map k) 
Keyed f => Keyed (Cofree f) 
Keyed f => Keyed (Free f) 
Keyed (HashMap k) 
Keyed w => Keyed (TracedT s w) 
Keyed m => Keyed (ReaderT e m) 
(Keyed f, Keyed g) => Keyed (Compose f g) 
(Keyed f, Keyed g) => Keyed (Product f g) 

(<#$>) :: Keyed f => (Key f -> a -> b) -> f a -> f b infixl 4 Source

keyed :: Keyed f => f a -> f (Key f, a) Source

Zippable functors

class Functor f => Zip f where Source

Minimal complete definition

Nothing

Methods

zipWith :: (a -> b -> c) -> f a -> f b -> f c Source

zip :: f a -> f b -> f (a, b) Source

zap :: f (a -> b) -> f a -> f b Source

Instances

Zip [] 
Zip Maybe 
Zip Identity 
Zip IntMap 
Zip Tree 
Zip Seq 
Zip NonEmpty 
Zip ((->) a) 
Zip m => Zip (IdentityT m) 
Ord k => Zip (Map k) 
Zip f => Zip (Cofree f) 
(Eq k, Hashable k) => Zip (HashMap k) 
Zip w => Zip (TracedT s w) 
Zip m => Zip (ReaderT e m) 
(Zip f, Zip g) => Zip (Compose f g) 
(Zip f, Zip g) => Zip (Product f g) 

Zipping keyed functors

class (Keyed f, Zip f) => ZipWithKey f where Source

Minimal complete definition

Nothing

Methods

zipWithKey :: (Key f -> a -> b -> c) -> f a -> f b -> f c Source

zapWithKey :: f (Key f -> a -> b) -> f a -> f b Source

Indexable functors

(!) :: Indexable f => f a -> Key f -> a Source

Safe Lookup

class Lookup f where Source

Methods

lookup :: Key f -> f a -> Maybe a Source

Instances

Lookup [] 
Lookup Maybe 
Lookup Identity 
Lookup IntMap 
Lookup Tree 
Lookup Seq 
Lookup NonEmpty 
Lookup ((->) a) 
Ix i => Lookup (Array i) 
Lookup m => Lookup (IdentityT m) 
Ord k => Lookup (Map k) 
Lookup f => Lookup (Cofree f) 
Lookup f => Lookup (Free f) 
(Eq k, Hashable k) => Lookup (HashMap k) 
(Lookup f, Lookup g) => Lookup (Coproduct f g) 
Lookup w => Lookup (TracedT s w) 
Lookup m => Lookup (ReaderT e m) 
(Lookup f, Lookup g) => Lookup (Compose f g) 
(Lookup f, Lookup g) => Lookup (Product f g) 

lookupDefault :: Indexable f => Key f -> f a -> Maybe a Source

Adjustable

class Functor f => Adjustable f where Source

Minimal complete definition

adjust

Methods

adjust :: (a -> a) -> Key f -> f a -> f a Source

replace :: Key f -> a -> f a -> f a Source

FoldableWithKey

foldrWithKey' :: FoldableWithKey t => (Key t -> a -> b -> b) -> b -> t a -> b Source

foldlWithKey' :: FoldableWithKey t => (b -> Key t -> a -> b) -> b -> t a -> b Source

foldrWithKeyM :: (FoldableWithKey t, Monad m) => (Key t -> a -> b -> m b) -> b -> t a -> m b Source

foldlWithKeyM :: (FoldableWithKey t, Monad m) => (b -> Key t -> a -> m b) -> b -> t a -> m b Source

traverseWithKey_ :: (FoldableWithKey t, Applicative f) => (Key t -> a -> f b) -> t a -> f () Source

forWithKey_ :: (FoldableWithKey t, Applicative f) => t a -> (Key t -> a -> f b) -> f () Source

mapWithKeyM_ :: (FoldableWithKey t, Monad m) => (Key t -> a -> m b) -> t a -> m () Source

forWithKeyM_ :: (FoldableWithKey t, Monad m) => t a -> (Key t -> a -> m b) -> m () Source

concatMapWithKey :: FoldableWithKey t => (Key t -> a -> [b]) -> t a -> [b] Source

anyWithKey :: FoldableWithKey t => (Key t -> a -> Bool) -> t a -> Bool Source

allWithKey :: FoldableWithKey t => (Key t -> a -> Bool) -> t a -> Bool Source

findWithKey :: FoldableWithKey t => (Key t -> a -> Bool) -> t a -> Maybe a Source

FoldableWithKey1

traverseWithKey1_ :: (FoldableWithKey1 t, Apply f) => (Key t -> a -> f b) -> t a -> f () Source

forWithKey1_ :: (FoldableWithKey1 t, Apply f) => t a -> (Key t -> a -> f b) -> f () Source

foldMapWithKeyDefault1 :: (FoldableWithKey1 t, Monoid m) => (Key t -> a -> m) -> t a -> m Source

TraversableWithKey

forWithKey :: (TraversableWithKey t, Applicative f) => t a -> (Key t -> a -> f b) -> f (t b) Source

forWithKeyM :: (TraversableWithKey t, Monad m) => t a -> (Key t -> a -> m b) -> m (t b) Source

mapAccumWithKeyL :: TraversableWithKey t => (Key t -> a -> b -> (a, c)) -> a -> t b -> (a, t c) Source

The mapAccumWithKeyL function behaves like a combination of mapWithKey and foldlWithKey; it applies a function to each element of a structure, passing an accumulating parameter from left to right, and returning a final value of this accumulator together with the new structure.

mapAccumWithKeyR :: TraversableWithKey t => (Key t -> a -> b -> (a, c)) -> a -> t b -> (a, t c) Source

The mapAccumWithKeyR function behaves like a combination of mapWithKey and foldrWithKey; it applies a function to each element of a structure, passing an accumulating parameter from right to left, and returning a final value of this accumulator together with the new structure.

mapWithKeyDefault :: TraversableWithKey t => (Key t -> a -> b) -> t a -> t b Source

foldMapWithKeyDefault :: (TraversableWithKey t, Monoid m) => (Key t -> a -> m) -> t a -> m Source

This function may be used as a value for foldMapWithKey in a FoldableWithKey instance.

TraversableWithKey1

foldMapWithKey1Default :: (TraversableWithKey1 t, Semigroup m) => (Key t -> a -> m) -> t a -> m Source