Functors able to read some separate data, the "index". They are expected to obey the laws imap g . imap f = imap (\i => g i . f i) and imap (const id) = id The abbreviation "Ind" could be taken to stand for "Indexed", but also for "Independent", to contrast it with the "Dependent" versions elsewhere in the library.
interface IndFunctor : Type -> (Type -> Type) -> Typeimap : (i -> x -> y) -> f x -> f yIndFunctor k (Pair k)IndFunctor () MaybeIndFunctor Nat ListIndFunctor (Fin k) (Vect k)Functor m => IndFunctor a (Kleisli m a)imap : IndFunctor i f => (i -> x -> y) -> f x -> f y(<|$>) : IndFunctor i f => (i -> x -> y) -> f x -> f y