dotty相关内容
我有以下方案: case class B(v: String) case class A(bs: Seq[B]) extension(a: A) def doit() = a.bs.map(_.doit()) // here is the exception extension(b: B) def doit() = println("OK: ${b.v}") 这使我在编译时出
..
我正在尝试创建一个函数,它接受一个更高种类的类型的元组并将一个函数应用于更高种类的类型中的类型. 在下面的示例中,有一个 trait Get[A],它是我们的高级类型.还有一个 Get 的元组: (Get[String],Get[Int]) 以及来自 (String,Int) => 的函数人. Scala-3 有一个称为 InverseMap 的 Match-Type,它将类型 (Ge
..
在 scala 语言中,隐式解析通常在编译时完成,有时会抛出混淆的错误信息,此类错误的一个著名例子是 shapeless Generic 抛出错误信息,如: 错误:找不到参数编码器的隐式值:CsvEncoder[Foo] (参见 https://books.underscore.io/shapeless-guide/shapeless-guide.html 详情) 这个问题的解决方案是在
..
是否可以在 Dotty、Scala 3 中使用宏生成新类? Zlaja 解决方案 目前在 Dotty 中只有(种类)def 宏.目前没有(某种)宏注释,它可以生成一个新成员,新班级等 对于新成员、新类等的生成,您可以使用 Scalameta(不带或带 SemanticDB, Scalafix [另见] 取决于此类生成是否为 只是句法或语义),它在编译时间(源代码生成)之前
..
在 Dotty 中给出以下内容: object 域 {final case class Create(name: String) extends BaseCreate[Create] {覆盖类型模型 = 域覆盖 def service[F[_]](client: KeystoneClient[F]): CrudService[F, Domain, Create] = client.domains
..
我正在尝试创建一个函数,该函数采用高级类型的元组并将函数应用于高级类型中的类型. 在下面的例子中,有一个 trait Get[A] 是我们的高级类型.还有一个 Get 的元组:(Get[String],Get[Int]) 以及来自 (String,Int) => 的函数.人. Scala-3 有一个名为 InverseMap 的匹配类型,它将类型 (Get[String], Get[I
..
我试图在 Dotty 中使用匹配类型实现 SKI 组合器演算.> SKI 组合子演算的简要说明: S、K 和 I 是术语 (xy) 是一个术语,如果 x 和 y 是术语并且类似于函数应用 (((Sx)y)z)(同Sxyz)返回xz(yz)(同(xz)(yz)) ((Kx)y)(同Kxy)返回x (Ix) 返回 x 以下是我使用的(R 尽可能减少术语).项 (xy) 被写成一个
..
我想在包装器函数中定义隐式值,并将其提供给内部函数使用,到目前为止,我设法通过从包装器传递隐式变量来做到这一点: case class B() trait Helper { def withImplicit[A]()(block: => A): A = { implicit val b: B = B() block } } class Test extends H
..
我一直在阅读有关Dotty的内容,因为它看起来将成为scala 3,并且注意到类型投影被认为是“不合理的",并已从语言中删除... 这似乎简直是无赖,因为我已经看到了几个用例真正有用的地方.例如: trait Contents class Foo extends Contents class Bar extends Contents trait Container[T
..
我使用Dotty模板创建了一个基本的Scala Dotty项目,并将该项目导入Intellij IDE. 当我使用sbt命令行时,一切正常. 当我尝试在Intellij IDE中构建或运行它时,出现以下错误: Error:scalac: Multiple 'scala-library*.jar' files (scala-library-0.9.0-RC1.jar, scala-
..
我正在尝试学习dotty的元编程.具体编译时间码生成.我认为通过构建一些东西来学习将是一个很好的方法.因此,我决定制作一个CSV解析器,该解析器会将行解析为case类.我想使用点子宏来生成解码器 trait Decoder[T]{ def decode(str:String):Either[ParseError, T] } object Decoder { inline given
..
Scala 3将带来类型推断的哪些变化?当前文档仅声明 TODO .例如, 弱一致性 Scala 2.13 scala> val i: Int = 42 val i: Int = 42 scala> val c: Char = 'a' val c: Char = a scala> List(i,c) val res0: List[Int] = List(42, 97) S
..
最近在《怪圈》中的谈话中,马丁·奥德斯基(Martin Odersky)阐明了他对Scala未来版本的看法叫多蒂.我知道这是一个进行中的工作,由于许多可能的向后兼容问题,它甚至可能不会流入Scala(至少不是很快).但是,如果发生这种情况,我们今天应该如何在Scala中编程以与Dotty向前兼容?我没有从演讲中得到所有想法,所以我希望有一个更深刻的人来总结这些变化并描述我们如何为它们做好准备.
..
我正在尝试使用Visual Studio Code运行点代码.我根据此页面中的说明使用sbt launchIDE启动了IDE. ,并且我还安装了Dotty Language Server和Code Runner扩展名. Dotty是使用brew安装的,我可以从CMD编译和执行Dotty代码. 问题是我无法从Visual Studio Code运行此代码,因为Code Runner试图使用sc
..
我正在尝试执行以下操作 trait Stateful { type State } case class SystemState(system: Stateful, state: system.State) // does not compile 即,state的类型取决于system(的值).但是,不支持该功能: 非法的依赖方法类型:参数出现在同一节或更早版本中的另一个参数
..
我正在阅读Scala 3文档.他们引入了given关键字,该关键字被认为是Scala 2 implicit的替代方法. 代码在这里 trait Ord[T] { def compare(x: T, y: T): Int def (x: T) (y: T) = compare(x, y) > 0 }
..
我正在查看Contextual Abstractions页面下的Dotty文档,并且看到了Given Instances. 给出的实例(或简称为“给定")定义了以下的“规范"值: 用于综合给定子句参数的某些类型. 示例: trait Ord[T] { def compare(x: T, y: T): Int def (x: T)
..
在scala语言中,隐式解析通常是在编译时完成的,有时会抛出混淆的错误信息,此类错误的一个著名示例是当无形状的Generic抛出诸如以下的错误信息时: error: could not find implicit value for parameter encoder: CsvEncoder[Foo] (请参见 https://books.underscore.io/shapeless-
..
我想为一个接受1个类型参数的类生成函数,该参数包装一个按名称值. class C[T](_t: => T) { def t: T = _t } 我想生成的函数是由T上可用的函数派生的. 我确切想要的是获取所有可用于T的功能,以编程方式更改其合约和实施,并使它们可用于C. 通过更改其合同,我的意思是更改其签名,以便它们返回C[R],其中R代表原始函数的返回类型.
..
我想为一个接受1种类型参数的类生成函数 case class C[T] (t: T) 取决于T类型参数. 我想生成的函数是由T上可用的函数派生的. 我想确切地是使所有功能可用于T,也可用于C. 作为C[Int]的示例,我希望能够在C上调用Int上可用的任何函数,并将该函数调用分派到C中包含的Int. val c1 = new C(1) assert(c1 + 1
..