Safe Haskell | Safe |
---|---|
Language | Haskell2010 |
Synopsis
- type family Key (f :: * -> *)
- class Functor f => Keyed f where
- (<#$>) :: Keyed f => (Key f -> a -> b) -> f a -> f b
- keyed :: Keyed f => f a -> f (Key f, a)
- class Functor f => Zip f where
- class (Keyed f, Zip f) => ZipWithKey f where
- class Lookup f => Indexable f where
- (!) :: Indexable f => f a -> Key f -> a
- class Lookup f where
- lookupDefault :: Indexable f => Key f -> f a -> Maybe a
- class Functor f => Adjustable f where
- class Foldable t => FoldableWithKey t where
- foldrWithKey' :: FoldableWithKey t => (Key t -> a -> b -> b) -> b -> t a -> b
- foldlWithKey' :: FoldableWithKey t => (b -> Key t -> a -> b) -> b -> t a -> b
- foldrWithKeyM :: (FoldableWithKey t, Monad m) => (Key t -> a -> b -> m b) -> b -> t a -> m b
- foldlWithKeyM :: (FoldableWithKey t, Monad m) => (b -> Key t -> a -> m b) -> b -> t a -> m b
- traverseWithKey_ :: (FoldableWithKey t, Applicative f) => (Key t -> a -> f b) -> t a -> f ()
- forWithKey_ :: (FoldableWithKey t, Applicative f) => t a -> (Key t -> a -> f b) -> f ()
- mapWithKeyM_ :: (FoldableWithKey t, Monad m) => (Key t -> a -> m b) -> t a -> m ()
- forWithKeyM_ :: (FoldableWithKey t, Monad m) => t a -> (Key t -> a -> m b) -> m ()
- concatMapWithKey :: FoldableWithKey t => (Key t -> a -> [b]) -> t a -> [b]
- anyWithKey :: FoldableWithKey t => (Key t -> a -> Bool) -> t a -> Bool
- allWithKey :: FoldableWithKey t => (Key t -> a -> Bool) -> t a -> Bool
- findWithKey :: FoldableWithKey t => (Key t -> a -> Bool) -> t a -> Maybe a
- class (Foldable1 t, FoldableWithKey t) => FoldableWithKey1 t where
- traverseWithKey1_ :: (FoldableWithKey1 t, Apply f) => (Key t -> a -> f b) -> t a -> f ()
- forWithKey1_ :: (FoldableWithKey1 t, Apply f) => t a -> (Key t -> a -> f b) -> f ()
- foldMapWithKeyDefault1 :: (FoldableWithKey1 t, Monoid m) => (Key t -> a -> m) -> t a -> m
- class (Keyed t, FoldableWithKey t, Traversable t) => TraversableWithKey t where
- forWithKey :: (TraversableWithKey t, Applicative f) => t a -> (Key t -> a -> f b) -> f (t b)
- forWithKeyM :: (TraversableWithKey t, Monad m) => t a -> (Key t -> a -> m b) -> m (t b)
- mapAccumWithKeyL :: TraversableWithKey t => (Key t -> a -> b -> (a, c)) -> a -> t b -> (a, t c)
- mapAccumWithKeyR :: TraversableWithKey t => (Key t -> a -> b -> (a, c)) -> a -> t b -> (a, t c)
- mapWithKeyDefault :: TraversableWithKey t => (Key t -> a -> b) -> t a -> t b
- foldMapWithKeyDefault :: (TraversableWithKey t, Monoid m) => (Key t -> a -> m) -> t a -> m
- class (Traversable1 t, FoldableWithKey1 t, TraversableWithKey t) => TraversableWithKey1 t where
- foldMapWithKey1Default :: (TraversableWithKey1 t, Semigroup m) => (Key t -> a -> m) -> t a -> m
Keys
type family Key (f :: * -> *) Source #
Instances
type Key [] Source # | |
type Key Maybe Source # | |
type Key Par1 Source # | |
type Key ZipList Source # | |
type Key Identity Source # | |
type Key NonEmpty Source # | |
type Key IntMap Source # | |
type Key Tree Source # | |
type Key Seq Source # | |
type Key (V1 :: * -> *) Source # | |
type Key (U1 :: * -> *) Source # | |
type Key ((,) k) Source # | |
type Key (Array i) Source # | |
type Key (Proxy :: * -> *) Source # | |
type Key (Map k) Source # | |
type Key (Cofree f) Source # | |
type Key (Free f) Source # | |
type Key (HashMap k) Source # | |
type Key (Rec1 f) Source # | |
type Key (TracedT s w) Source # | |
type Key (IdentityT m) Source # | |
type Key (Tagged a) Source # | |
type Key ((->) a :: * -> *) Source # | |
type Key (K1 i c :: * -> *) Source # | |
type Key (f :+: g) Source # | |
type Key (f :*: g) Source # | |
type Key (Product f g) Source # | |
type Key (Sum f g) Source # | |
type Key (ReaderT e m) Source # | |
type Key (M1 i c f) Source # | |
type Key (g :.: f) Source # | |
type Key (Compose f g) Source # | |
Keyed functors
class Functor f => Keyed f where Source #
mapWithKey :: (Key f -> a -> b) -> f a -> f b Source #
Instances
Zippable functors
class Functor f => Zip f where Source #
Laws:
fmap
fst
(zip
u u) = ufmap
snd
(zip
u u) = uzip
(fmap
fst
u) (fmap
snd
u) = uzip
(flip
(,)) x y =zip
y x
Instances
Zip [] Source # | |
Zip Maybe Source # | |
Zip Par1 Source # | |
Zip ZipList Source # | |
Zip Identity Source # | |
Zip NonEmpty Source # | |
Zip IntMap Source # | |
Zip Tree Source # | |
Zip Seq Source # | |
Zip (V1 :: * -> *) Source # | |
Zip (U1 :: * -> *) Source # | |
Zip (Proxy :: * -> *) Source # | |
Ord k => Zip (Map k) Source # | |
Zip f => Zip (Cofree f) Source # | |
(Eq k, Hashable k) => Zip (HashMap k) Source # | |
Zip f => Zip (Rec1 f) Source # | |
Zip w => Zip (TracedT s w) Source # | |
Zip m => Zip (IdentityT m) Source # | |
Zip (Tagged a) Source # | |
Zip ((->) a :: * -> *) Source # | |
(Zip f, Zip g) => Zip (f :*: g) Source # | |
(Zip f, Zip g) => Zip (Product f g) Source # | |
Zip m => Zip (ReaderT e m) Source # | |
Zip f => Zip (M1 i c f) Source # | |
(Zip f, Zip g) => Zip (g :.: f) Source # | |
(Zip f, Zip g) => Zip (Compose f g) Source # | |
Zipping keyed functors
class (Keyed f, Zip f) => ZipWithKey f where Source #
zipWithKey :: (Key f -> a -> b -> c) -> f a -> f b -> f c Source #
zapWithKey :: f (Key f -> a -> b) -> f a -> f b Source #
Instances
Indexable functors
class Lookup f => Indexable f where Source #
Instances
Safe Lookup
Instances
Adjustable
class Functor f => Adjustable f where Source #
Instances
Adjustable [] Source # | |
Adjustable Par1 Source # | |
Adjustable ZipList Source # | |
Adjustable Identity Source # | |
Adjustable NonEmpty Source # | |
Adjustable IntMap Source # | |
Adjustable Tree Source # | |
Adjustable Seq Source # | |
Adjustable (U1 :: * -> *) Source # | |
Ix i => Adjustable (Array i) Source # | |
Adjustable (Proxy :: * -> *) Source # | |
Ord k => Adjustable (Map k) Source # | |
Adjustable f => Adjustable (Cofree f) Source # | |
Adjustable f => Adjustable (Free f) Source # | |
Adjustable f => Adjustable (Rec1 f) Source # | |
Adjustable (Tagged a) Source # | |
Adjustable (K1 i c :: * -> *) Source # | |
(Adjustable f, Adjustable g) => Adjustable (f :+: g) Source # | |
(Adjustable f, Adjustable g) => Adjustable (f :*: g) Source # | |
(Adjustable f, Adjustable g) => Adjustable (Product f g) Source # | |
(Adjustable f, Adjustable g) => Adjustable (Sum f g) Source # | |
Adjustable f => Adjustable (M1 i c f) Source # | |
(Adjustable f, Adjustable g) => Adjustable (g :.: f) Source # | |
FoldableWithKey
class Foldable t => FoldableWithKey t where Source #
toKeyedList :: t a -> [(Key t, a)] Source #
foldMapWithKey :: Monoid m => (Key t -> a -> m) -> t a -> m Source #
foldrWithKey :: (Key t -> a -> b -> b) -> b -> t a -> b Source #
foldlWithKey :: (b -> Key t -> a -> b) -> b -> t a -> b Source #
Instances
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
class (Foldable1 t, FoldableWithKey t) => FoldableWithKey1 t where Source #
foldMapWithKey1 :: Semigroup m => (Key t -> a -> m) -> t a -> m Source #
Instances
FoldableWithKey1 Par1 Source # | |
FoldableWithKey1 Identity Source # | |
FoldableWithKey1 NonEmpty Source # | |
FoldableWithKey1 Tree Source # | |
FoldableWithKey1 (V1 :: * -> *) Source # | |
FoldableWithKey1 ((,) k) Source # | |
FoldableWithKey1 f => FoldableWithKey1 (Cofree f) Source # | |
FoldableWithKey1 f => FoldableWithKey1 (Free f) Source # | |
FoldableWithKey1 f => FoldableWithKey1 (Rec1 f) Source # | |
FoldableWithKey1 m => FoldableWithKey1 (IdentityT m) Source # | |
FoldableWithKey1 (Tagged a) Source # | |
(FoldableWithKey1 f, FoldableWithKey1 g) => FoldableWithKey1 (f :+: g) Source # | |
(FoldableWithKey1 f, FoldableWithKey1 g) => FoldableWithKey1 (f :*: g) Source # | |
(FoldableWithKey1 f, FoldableWithKey1 g) => FoldableWithKey1 (Product f g) Source # | |
(FoldableWithKey1 f, FoldableWithKey1 g) => FoldableWithKey1 (Sum f g) Source # | |
FoldableWithKey1 f => FoldableWithKey1 (M1 i c f) Source # | |
(FoldableWithKey1 f, FoldableWithKey1 m) => FoldableWithKey1 (Compose f m) Source # | |
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
class (Keyed t, FoldableWithKey t, Traversable t) => TraversableWithKey t where Source #
traverseWithKey :: Applicative f => (Key t -> a -> f b) -> t a -> f (t b) Source #
mapWithKeyM :: Monad m => (Key t -> a -> m b) -> t a -> m (t b) Source #
Instances
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
class (Traversable1 t, FoldableWithKey1 t, TraversableWithKey t) => TraversableWithKey1 t where Source #
traverseWithKey1 :: Apply f => (Key t -> a -> f b) -> t a -> f (t b) Source #
Instances
foldMapWithKey1Default :: (TraversableWithKey1 t, Semigroup m) => (Key t -> a -> m) -> t a -> m Source #