scalaz/scalaz — pull request #669 by japgolly (2014-03-11 11:12:20+00:00)
Title: Added explicit return types for {Y,Coy}oneda.apply

Before this patch: :hurtrealbad:
```
scala> import scalaz._, Scalaz._
import scalaz._
import Scalaz._

scala> Free.liftFU(Coyoneda(Set(4)))
:14: error: Implicit not found: scalaz.Unapply[scalaz.Functor, scalaz.Coyoneda[scala.collection.immutable.Set,Int]{type I = Int; val fi: scala.collection.immutable.Set[Int]}]. Unable to unapply type `scalaz.Coyoneda[scala.collection.immutable.Set,Int]{type I = Int; val fi: scala.collection.immutable.Set[Int]}` into a type constructor of kind `M[_]` that is classified by the type class `scalaz.Functor`. Check that the type class is defined by compiling `implicitly[scalaz.Functor[type constructor]]` and review the implicits in object Unapply, which only cover common type 'shapes.'
Free.liftFU(Coyoneda(Set(4)))
^
```

After this patch: :hibiscus:
```
scala> import scalaz._, Scalaz._
import scalaz._
import Scalaz._

scala> Free.liftFU(Coyoneda(Set(4)))
res0: scalaz.Free[scalaz.Unapply[scalaz.Functor,scalaz.Coyoneda[scala.collection.immutable.Set,Int]]{type M[X] = scalaz.Coyoneda[scala.collection.immutable.Set,X]; type A = Int}#M,Int] = Suspend(scalaz.Coyoneda$$anon$21@b016515)
```