title: how to use curried type arguments in matryoshka
body: <p>After reading <a href="http://akmetiuk.com/posts/2017-03-10-matryoshka-intro.html" rel="nofollow noreferrer">this excellent intro</a> about <a href="https://github.com/slamdata/matryoshka" rel="nofollow noreferrer">matryoshka</a>, I tried to transform <code>IntList</code> into a generic list (I kept the name <code>IntList</code> in the example below)</p>
  
  <pre><code> sealed trait IntList[+H, +A]
   case class Cons[A](head: H, tail: A) extends IntList[H, A]
   case object Empty extends IntList[Nothing, Nothing]
  
   implicit def intListFunct[H]: Functor[IntList[H, ?]] = new Functor[IntList[H, ?]] {
     def map[A, B](fa: IntList[H, A])(f: A =&gt; B): IntList[H, B] = fa match {
       case Cons(head, tail) =&gt; Cons(head, f(tail))
       case Empty =&gt; Empty
     }
   }
  
   def lst[T](implicit T: Corecursive.Aux[T, IntList[Int, ?]]): T =
     Cons(
       1,
       Cons(
         2,
         Cons(
           3,
           Empty.embed
         ).embed
       ).embed
     ).embed
  
   def sumList[T](l: T)(implicit T: Recursive.Aux[T, IntList[Int, ?]]): Int = l.cata[Int] {
     case Cons(head, tail) =&gt; head + tail
     case Empty =&gt; 0
   }
  
   val listRes = sumList(lst[Fix[IntList[Int, ?]]])
  </code></pre>
  
  <p>but it doesn't compile I get this error:</p>
  
  <pre><code>[error] /Users/caente1/workshop/graphs/src/main/scala/graph.scala:40: could not find implicit value for parameter T: matryoshka.Corecursive.Aux[matryoshka.data.Fix[[β$4$]common.lists.package.IntList[Int,β$4$]],[β$2$]common.lists.package.IntList[Int,β$2$]]
  [error]   val listRes = sumList(lst[Fix[IntList[Int, ?]]])
  </code></pre>
  
  <p>So I'm obviously doing something wrong, but I can't get my head around it yet, what would be better way to do this?</p>