Scala 种类编译器插件λ;找不到

Scala 种类编译器插件λ;找不到,scala,type-kinds,kind-projector,Scala,Type Kinds,Kind Projector,我已经启用了kind编译器插件addCompilerPlugin(“org.spire math”%“kind projector”%“0.9.6”),现在我可以使用?符号,例如映射[字符串],,但是Lambda和λ没有解析 val f:Id~>Future=λ[Id~>Future](…) 产生错误:未找到:值λ。λ仍然受到kind编译器的支持吗?首先,提醒您应该添加 addCompilerPlugin("org.spire-math" %% "kind-projector" % "0.9.6

我已经启用了kind编译器插件
addCompilerPlugin(“org.spire math”%“kind projector”%“0.9.6”)
,现在我可以使用
符号,例如
映射[字符串],
,但是Lambda和λ没有解析

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


产生
错误:未找到:值λ
。λ仍然受到kind编译器的支持吗?

首先,提醒您应该添加

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, ?]]

我不确定

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

我刚刚通过快速执行
rm-rf./target
并重新启动一切解决了这个确切的问题(感觉这不是第一次)


我还删除了我的ensime项目缓存,只是为了确保-大概对IntelliJ也这么做是个好主意。

您是使用sbt还是某种编辑器(如IntelliJ)编译的?例如,IntelliJ编写了自己的scala解析器,可能会给您错误的标志。我在IntelliJ和普通sbt中得到了相同的错误:compile
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)
}