3 votes

L'annotation typeclass aurait dû être supprimée par Simulacrum mais ne l'a pas été

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

4voto

Dmytro Mitin Points 13413

Vous n'avez pas ajouté macro-paradise

addCompilerPlugin("org.scalamacros" % "paradise" % "2.1.0" cross CrossVersion.full)

https://github.com/mpilquist/simulacrum#including-simulacrum

0voto

Joe Points 12

// Pour Scala 2.13+, au lieu d'ajouter le plugin du compilateur (...

scalacOptions += "-Ymacro-annotations"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X