scalaz/scalaz — pull request #384 by bmjames (2013-06-04 11:18:35+00:00)
Title: Generalised endomorphic arrows

This patch introduces a newtype for `A =>: A`, with an associated monoid.

A bit of history: Myself and @S11001001 originally did this work on [another branch](https://github.com/bmjames/scalaz/tree/endomorphisms), and redefined the existing `Endo` to be an alias `Endo[A] = Endomorphic[Function1, A, A]`. However, this broke existing code using `Endo`, and introduced the overhead of requiring the Arrow instance for `Function` any time `Endo` was used. I couldn't find a way to avoid that, so I have reworked `Endomorphic` as a distinct type, and left `Endo` as it was.