Je tente d'écrire une simple classe de type en utilisant Simulacrum. Voici mon build.sbt
ThisBuild / scalaVersion := "2.12.8"
ThisBuild / version := "0.1.0-SNAPSHOT"
ThisBuild / organization := "com.example"
ThisBuild / organizationName := "example"
lazy val root = (project in file("."))
.settings(
name := "functional",
autoCompilerPlugins := true,
libraryDependencies ++= Seq(
"com.github.mpilquist" %% "simulacrum" % "0.15.0",
compilerPlugin("org.spire-math" %% "kind-projector" % "0.9.9")
)
)
et voici mon code
import simulacrum._
@typeclass trait Functor[F[_]] {
def map[A, B](fa: F[A])(f: A => B) : F[B]
def lift[A, B](fa: F[A])(f: A => B) : F[A] => F[B] = fa => map(fa)(f)
def as[A, B](fa: F[A], b: => B) : F[B] = map(fa)(_ => b)
def void[A](fa: F[A]) : F[Unit] = as(fa, ())
}
mais j'ai une erreur
l'annotation typeclass aurait dû être supprimée par simulacrum mais ne l'a pas été
[error] @typeclass trait Functor[F[_]] {
[error] ^
[error] une erreur trouvée