ekmett/free — pull request #41 by vklj (2014-02-26 19:34:00+00:00)
Title: Applicative and Monad instances for CofreeT

Addresses [issue #22] [4]. This preconditions also make ```CofreeT f``` a monad transformer.

Proofs of the relevant laws (not yet _composition_ for ```Applicative```) can be found here:
+ [Applicative][1]
+ [Monad][2]
+ [MonadTrans][3]

Requiring ```Alternative``` is perhaps too strong. The proofs and instances are also valid for ```Data.Functor.Plus``` in the "semigroupoids" package; it's enough to replace ```(<|>)``` by ```()``` and ```empty``` by ```zero```.

[1]: https://github.com/team-free/free-doc/blob/master/proofs/cofree-trans-applicative.txt
[2]: https://github.com/team-free/free-doc/blob/master/proofs/cofree-trans-monad.txt
[3]: https://github.com/team-free/free-doc/blob/master/proofs/cofree-trans-monadtrans.txt
[4]: https://github.com/ekmett/free/issues/22