title: "Higher Kinded Type Should be Enabled" Warning
body: <p>In the following code (from <a href="http://www.manning.com/bjarnason/" rel="noreferrer">Functional Programming in Scala</a>):</p>
  
  <pre><code>trait Functor[F[_]] {
    def map[A,B](fa: F[A])(f: A =&gt; B): F[B]
  }
  
  trait Monad[F[_]] {
    def unit[A](a: =&gt; A): F[A]
    def flatMap[A,B](ma: F[A])(f: A =&gt; F[B]): F[B]
    def apply[A](a: =&gt; A): F[A]
  }
  </code></pre>
  
  <p>I see the following warning:</p>
  
  <pre><code>[warn] C:\...\Monad.scala:3: higher-kinded type should be enabled
  [warn] by making the implicit value scala.language.higherKinds visible.
  [warn] This can be achieved by adding the import clause 'import scala.language.higherKinds'
  [warn] or by setting the compiler option -language:higherKinds.
  [warn] See the Scala docs for value scala.language.higherKinds for a discussion
  [warn] why the feature should be explicitly enabled.
  [warn] trait Functor[F[_]] {
  [warn]               ^
  [warn] C:\...\Monad.scala:7: higher-kinded type should be enabled
  [warn] by making the implicit value scala.language.higherKinds visible.
  [warn] trait Monad[F[_]] {
  </code></pre>
  
  <p>What's going on here? Note that I read this <a href="https://stackoverflow.com/questions/3816251/implicit-parameter-resolution-for-higher-kinded-types">post</a>, but didn't understand it.</p>