"Higher Kinded Type Should be Enabled" Warning
scala
Solution
See the doc for higherKinds.
Only where this flag is enabled, higher-kinded types can be written.
The level of abstraction implied by these design patterns is often a barrier to understanding for newcomers to a Scala codebase.
But note that the import is no longer required for recent 2.13. See the doc. The git commit links to an explanation that they weren't previously sure whether language support was stable.
Apparently, that means, "Some things that were previously inexpressible now just work."
The following stale joke is not relevant, but the missing hyphen for "higher-kinded" seems to indicate a certain lack of facility:
For some reason, no one has joked about:
Higher kinded types in Scala lead to a Turing-complete type system, where compiler termination is no longer guaranteed.
...though often it will just terminate early with a crash.
That's just a joke.
Problem
In the following code (from Functional Programming in Scala): ``` trait Functor[F[_]] { def map[A,B](fa: F[A])(f: A => B): F[B] } trait Monad[F[_]] { def unit[A](a: => A): F[A] def flatMap[A,B](ma: F[A])(f: A => F[B]): F[B] def apply[A](a: => A): F[A] } ``` I see the following warning: ``` [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[_]] { ``` What's going on here? Note that I read this post, but didn't understand it.