title: How to implement Functor[Dataset]
body: <p>I am struggling on how to create an instance of <code>Functor[Dataset]</code>... the problem is that when you <code>map</code> from <code>A</code> to <code>B</code> the <code>Encoder[B]</code> must be in the implicit scope but I am not sure how to do it.</p>
  
  <pre><code>implicit val datasetFunctor: Functor[Dataset] = new Functor[Dataset] {
      override def map[A, B](fa: Dataset[A])(f: A =&gt; B): Dataset[B] = fa.map(f)
    }
  </code></pre>
  
  <p>Of course this code is throwing a compilation error since <code>Encoder[B]</code> is not available but I can't add <code>Encoder[B]</code> as an implicit parameter because it would change the map method signature, how can I solve this?</p>