Data.Functor.WithIndex

indexed-traversable-0.1.2: FunctorWithIndex, FoldableWithIndex, TraversableWithIndex

Safe Haskell | Safe
Language | Haskell2010

Data.Functor.WithIndex

Contents

- Indexed Functors

Synopsis

- class Functor f => FunctorWithIndex i f | f -> i where
  - imap :: (i -> a -> b) -> f a -> f b

# Indexed Functors

class Functor f => FunctorWithIndex i f | f -> i where #

A `Functor` with an additional index.

Instances must satisfy a modified form of the `Functor` laws:

    imap f . imap g ≡ imap (\i -> f i . g i)
    imap (\_ a -> a) ≡ id

Minimal complete definition

Nothing

Methods

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

Map with access to the index.

default imap :: TraversableWithIndex i f => (i -> a -> b) -> f a -> f b #

#### Instances

Instances details

FunctorWithIndex () Identity # |
Instance details Defined in WithIndex Methods imap :: (() -> a -> b) -> Identity a -> Identity b #
FunctorWithIndex () Par1 # |
Instance details Defined in WithIndex Methods imap :: (() -> a -> b) -> Par1 a -> Par1 b #
FunctorWithIndex () Maybe # |
Instance details Defined in WithIndex Methods imap :: (() -> a -> b) -> Maybe a -> Maybe b #
FunctorWithIndex Int ZipList # | Same instance as for `[]`.
Instance details Defined in WithIndex Methods imap :: (Int -> a -> b) -> ZipList a -> ZipList b #
FunctorWithIndex Int IntMap # |
Instance details Defined in WithIndex Methods imap :: (Int -> a -> b) -> IntMap a -> IntMap b #
FunctorWithIndex Int Seq # | The position in the `Seq` is available as the index.
Instance details Defined in WithIndex Methods imap :: (Int -> a -> b) -> Seq a -> Seq b #
FunctorWithIndex Int NonEmpty # |
Instance details Defined in WithIndex Methods imap :: (Int -> a -> b) -> NonEmpty a -> NonEmpty b #
FunctorWithIndex Int [] # | The position in the list is available as the index.
Instance details Defined in WithIndex Methods imap :: (Int -> a -> b) -> [a] -> [b] #
FunctorWithIndex Void (Proxy :: Type -> Type) # |
Instance details Defined in WithIndex Methods imap :: (Void -> a -> b) -> Proxy a -> Proxy b #
FunctorWithIndex Void (U1 :: Type -> Type) # |
Instance details Defined in WithIndex Methods imap :: (Void -> a -> b) -> U1 a -> U1 b #
FunctorWithIndex Void (V1 :: Type -> Type) # |
Instance details Defined in WithIndex Methods imap :: (Void -> a -> b) -> V1 a -> V1 b #
Ix i => FunctorWithIndex i (Array i) # |
Instance details Defined in WithIndex Methods imap :: (i -> a -> b) -> Array i a -> Array i b #
FunctorWithIndex k (Map k) # |
Instance details Defined in WithIndex Methods imap :: (k -> a -> b) -> Map k a -> Map k b #
FunctorWithIndex k ((,) k) # |
Instance details Defined in WithIndex Methods imap :: (k -> a -> b) -> (k, a) -> (k, b) #
FunctorWithIndex Void (Const e :: Type -> Type) # |
Instance details Defined in WithIndex Methods imap :: (Void -> a -> b) -> Const e a -> Const e b #
FunctorWithIndex Void (Constant e :: Type -> Type) # |
Instance details Defined in WithIndex Methods imap :: (Void -> a -> b) -> Constant e a -> Constant e b #
FunctorWithIndex i f => FunctorWithIndex i (Rec1 f) # |
Instance details Defined in WithIndex Methods imap :: (i -> a -> b) -> Rec1 f a -> Rec1 f b #
FunctorWithIndex i f => FunctorWithIndex i (Backwards f) # |
Instance details Defined in WithIndex Methods imap :: (i -> a -> b) -> Backwards f a -> Backwards f b #
FunctorWithIndex i m => FunctorWithIndex i (IdentityT m) # |
Instance details Defined in WithIndex Methods imap :: (i -> a -> b) -> IdentityT m a -> IdentityT m b #
FunctorWithIndex i f => FunctorWithIndex i (Reverse f) # |
Instance details Defined in WithIndex Methods imap :: (i -> a -> b) -> Reverse f a -> Reverse f b #
FunctorWithIndex Void (K1 i c :: Type -> Type) # |
Instance details Defined in WithIndex Methods imap :: (Void -> a -> b) -> K1 i c a -> K1 i c b #
FunctorWithIndex r ((->) r) # |
Instance details Defined in WithIndex Methods imap :: (r -> a -> b) -> (r -> a) -> r -> b #
FunctorWithIndex [Int] Tree # |
Instance details Defined in WithIndex Methods imap :: ([Int] -> a -> b) -> Tree a -> Tree b #
FunctorWithIndex i m => FunctorWithIndex (e, i) (ReaderT e m) # |
Instance details Defined in WithIndex Methods imap :: ((e, i) -> a -> b) -> ReaderT e m a -> ReaderT e m b #
(FunctorWithIndex i f, FunctorWithIndex j g) => FunctorWithIndex (Either i j) (Product f g) # |
Instance details Defined in WithIndex Methods imap :: (Either i j -> a -> b) -> Product f g a -> Product f g b #
(FunctorWithIndex i f, FunctorWithIndex j g) => FunctorWithIndex (Either i j) (Sum f g) # |
Instance details Defined in WithIndex Methods imap :: (Either i j -> a -> b) -> Sum f g a -> Sum f g b #
(FunctorWithIndex i f, FunctorWithIndex j g) => FunctorWithIndex (Either i j) (f :*: g) # |
Instance details Defined in WithIndex Methods imap :: (Either i j -> a -> b) -> (f :*: g) a -> (f :*: g) b #
(FunctorWithIndex i f, FunctorWithIndex j g) => FunctorWithIndex (Either i j) (f :+: g) # |
Instance details Defined in WithIndex Methods imap :: (Either i j -> a -> b) -> (f :+: g) a -> (f :+: g) b #
(FunctorWithIndex i f, FunctorWithIndex j g) => FunctorWithIndex (i, j) (Compose f g) # |
Instance details Defined in WithIndex Methods imap :: ((i, j) -> a -> b) -> Compose f g a -> Compose f g b #
(FunctorWithIndex i f, FunctorWithIndex j g) => FunctorWithIndex (i, j) (f :.: g) # |
Instance details Defined in WithIndex Methods imap :: ((i, j) -> a -> b) -> (f :.: g) a -> (f :.: g) b #