Functor module:Data package:indexed-traversable

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