gpt4 book ai didi

scala - 未找到 Kind 编译器插件 λ

转载 作者:行者123 更新时间:2023-12-03 16:41:05 24 4
gpt4 key购买 nike

我启用了那种编译器插件 addCompilerPlugin("org.spire-math" % "kind-projector" % "0.9.6")我现在可以使用 ?符号例如Map[String, ?]但是 Lambda 和 λ 没有被解析。
val f: Id ~> Future = λ[Id ~> Future](...)
生产 Error: not found: value λ . λ 仍然被 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, ?]]

或者
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

关于scala - 未找到 Kind 编译器插件 λ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48767385/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com