In issue #278 [0] I proposed to get rid of `Index` (and `Length`)
completely. The first step, the removal of `MetricSpace` and `BKTree` is
almost complete [1].
Once #347 gets merged, there are no remaining uses of `Index` and
`Length` in scalaz left.
Technically, we don't even need a separate type class for it. It could
be replaced by a `index` method on `Foldable` with a default
implementation based on `foldl`. Same for `length`.
As Kris pointed out in [1], those default implementations would have
O(n) time complexity. Instances of `Foldable` could override those
definitions, though.
Chris, what is your use case for `Index`? Would it still be covered if
`index` became a method on `Foldable`?
[0]
https://github.com/scalaz/scalaz/issues/278
[1]
https://github.com/scalaz/scalaz/pull/347