scalaz/scalaz — pull request #281 by pthariensflame (2013-02-08 01:42:52+00:00)
Title: Indexed RWST and State/Reader/(Un|W)riter `zoom`/`[co]local`

This pull request adds `colocal` to `WriterT` and `UnwriterT`, `local` to `ReaderT` (a.k.a. `Kleisli`), and `zoom` to `IndexedStateT`. These methods allow a transformer of one index type to be morphed into a transformer of a different index type. More specifically:

- `colocal` transforms a `WriterT[F, W, A]` (resp. `UnwriterT[F, U, A]`) into a `WriterT[F, X, A]` (resp. `UnwriterT[F, X, A]`) using a function of type `W => X` (resp. `U => X`).
- `local` transforms a `ReaderT[F, R, A]` into a `ReaderT[F, X, A]` using a function of type `X => R`.
- `zoom` transforms an `IndexedStateT[F, S1, S2, A]` into an `IndexedStateT[F, X1, X2, A]` using a `LensFamily[X1, X2, S1, S2]`.

In addition, this pull request generalizes `ReaderWriterStateT` to `IndexedReaderWriterStateT`, although the entire RWST segment of Scalaz 7 could use some more love.

It also updates the version of [sbt-extras](https://github.com/paulp/sbt-extras) we were using (as well as the version of SBT itself).