找不到合适的编译器插件λ



我已经启用了"类型编译器"插件addCompilerPlugin("org.spire-math" % "kind-projector" % "0.9.6"),现在可以使用?符号,例如。Map[String, ?]但是lambda和λ无法解决。

val f: Id ~> Future = λ[Id ~> Future](...)

产生Error: not found: value λ。λ是否仍由类型编译器支持?

首先,提醒一个人应该添加

addCompilerPlugin("org.spire-math" %% "kind-projector" % "0.9.6")

build.sbt,而不是plugins.sbt

,例如,对于

import scala.language.higherKinds
trait MyTrait[F[_]]

用lambda类型声明

class MyClass extends MyTrait[({ type l[A] = Map[String, A] })#l]

可以用

替换
class MyClass extends MyTrait[Map[String, ?]]

class MyClass extends MyTrait[λ[A => Map[String, A]]]

class MyClass extends MyTrait[Lambda[A => Map[String, A]]]

我不确定

是否
val f: Id ~> Future = λ[Id ~> Future](???)

是有效的语法。

~>通常用于

中的自然变换
import cats.{Id, ~>}
import scala.concurrent.Future
import scala.concurrent.ExecutionContext.Implicits.global
val f: Id ~> Future = new (Id ~> Future) {
  override def apply[A](fa: A): Future[A] = Future(fa)
}

而不是类型的lambdas。

更新。好的,是多态lambda https://github.com/typelevel/kind-projector#polymorphic-lambda-values

我刚刚解决了这个确切的问题(而不是第一次,这是第一次(来进行快速rm -rf ./target并重新启动所有内容。

我还删除了我的内陆项目缓存,只是为了确保 - 大概对Intellij做同样的事情也是一个好主意。

相关内容

  • 没有找到相关文章

最新更新