indexed-traversable

FunctorWithIndex, FoldableWithIndex, TraversableWithIndex

This package provides three useful generalizations: @ class Functor f => FunctorWithIndex i f | f -> i where \ imap :: (i -> a -> b) -> f a -> f b @ @ class Foldable f => FoldableWithIndex i f | f -> i where \ ifoldMap :: Monoid m => (i -> a -> m) -> f a -> m @ @ class (FunctorWithIndex i t, FoldableWithIndex i t, Traversable t) => TraversableWithIndex i t | t -> i where \ itraverse :: Applicative f => (i -> a -> f b) -> t a -> f (t b) @ This package contains instances for types in GHC boot libraries. For some additional instances see [indexed-traversable-instances](https://hackage.haskell.org/package/indexed-traversable-instances). The [keys](https://hackage.haskell.org/package/keys) package provides similar functionality, but uses (associated) @TypeFamilies@ instead of @FunctionalDependencies@.