dorchard/codo-notation — pull request #1 by ekmett (2012-11-22 20:22:55+00:00)
Title: Converted to Control.Lens

I put together a patch to use the `lens` library's considerably faster version of Uniplate that you might consider.

The major advantages over the original `uniplate` package are that:

* You can use the same combinators with `uniplate` that you can use with any other `Traversal`.
* You don't have to worry about linking a module that happens to use the Data uniplate instances or happens to use a hand-rolled uniplate instance, which then infects everything else.
* It is about 45% faster.
* It already uses comonads internally. ;)

None of these are particularly compelling, in isolation, but the API remains the same.

(If I add an instance of `Plated` to `Exp` then other than imports your code wouldn't change at all.)