FunctorWithIndex, FoldableWithIndex, TraversableWithIndex
https://hackage.haskell.org/package/indexed-traversable