问题标签 [dotty]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
76 浏览

scala - DOT 演算中的列表编码

我正在阅读依赖对象类型的本质,发现列表的以下编码:

在此处输入图像描述

为什么要写:

特别是,为什么我们给A型底部?类型不应该像 cons 中那样是多态的吗?

0 投票
1 回答
1133 浏览

scala - 给定关键字在 Scala 3 或 dotty 中如何工作?

我正在浏览 Scala 3 文档。他们引入了given关键字,它被认为是 Scala 2 的替代品implicit。代码在这里

我在这里很困惑,下面的代码中发生了什么:

Ord[T]它是在given关键字还是其他东西中实例化?

0 投票
1 回答
131 浏览

scala - 基本的新 dotty 项目说明因“无效的私钥”而失败,如何解决?

Dotty的入门页面提供了启动新项目的说明:

创建一个 Dotty 项目:

当我运行这个时,我得到这个错误:

看来我对 GitHub 的身份验证可能失败了。一些谷歌搜索让我得到了这个答案,说这是由于使用了更新的 OpenSSHid_rsa密钥。

所以我创建了一个新的 SSH 密钥~/.ssh/id_rsa.nonopenssh,将其添加到我的 SSH 代理,并将其添加到我的 GitHub 帐户,但我仍然收到错误消息。我该如何解决?

0 投票
2 回答
771 浏览

scala - IntelliJ 突然停止突出显示 Scala/Dotty 项目中的错误

TLDR;IntelliJ 没有突出显示我的 Scala 项目中的任何错误(语法/类型不匹配)。我已经尝试过类型感知突出显示,将突出显示级别设置为“检查”,并根据 StackOverflow 答案启用“实验功能”,然后重新加载项目。

我有一个在 IntelliJ 2019.3 中运行良好的 Scala 2.13 项目 (sbt)。在那之后我做了一些更改(我没有检查它是否编译,并且它有几个错误)然后我决定将它移植到 Dotty(并将 IntelliJ 更新到 2020.1 EAP)。我创建了一个新的 Dotty 项目,显然没有错误。

然后我将所有源文件复制到这个项目并修改了 build.sbt 文件。当我这样做时,我可以看到一些语法错误突出显示,并且given关键字未被检测为关键字,很可能是因为插件认为该语言应该是 Scala 2,而不是 Scala 3。

之后,我从 sbt 导入项目,错误的语法错误消失了,所以我很高兴地关闭了该文件并开始修复其他文件。我不确定错误突出显示最初是否有效然后关闭,或者它是否从未有效。过了一会儿,我意识到未解析的引用没有突出显示——例如,当我拼错了一个类名并试图去声明时,它没有做任何事情,尽管当我更正它时,它可以解析引用,大概是因为那是没有错误的文件之一。然后我看到语法错误也没有被识别。

我启用了类型感知突出显示,并且突出显示级别设置为检查。我正在使用带有 Scala 插件版本 2020.1.977 (EAP) 的 IntelliJ 2020.1 EAP。build.sbt 包含 scala 版本“0.23.0-RC1”。IntelliJ 没有运行任何其他进程,当时我的计算机上也没有任何资源密集型程序。

我在右下角收到多条错误消息,例如

  • java.lang.AssertionError: assertion failed(几次)

  • com.intellij.psi.PsiInvalidElementAccessException: Element: class org.jetbrains.plugins.scala.lang.psi.impl.statements.params.ScTypeParamImpl #Scala because: different providers: org.jetbrains.plugins.scala.lang.psi.ScFileViewProvider{vFile=file:<The path>/Pattern.scala, content=VirtualFileContent{size=1716}, eventSystemEnabled=true}(a24437); org.jetbrains.plugins.scala.lang.psi.ScFileViewProvider{vFile=file:<Same path>/Pattern.scala, content=VirtualFileContent{size=1716}, eventSystemEnabled=true}(b39181a) invalidated at(这个出现了好几次)

我感觉这只是 Dotty 的一个错误,很快就会解决。Scala Nightly 插件有类似的行为,这就是为什么我切换到 EAP 并创建了一个全新的项目,我认为它的错误会更少。任何建议将不胜感激。

当我在 IntelliJ 2020.1 EAP 但不是在 2019.3 中打开它时,我的旧 Scala 2 项目也发生了同样的事情。现在看来,这不是 Dotty 特有的东西。

0 投票
1 回答
269 浏览

scala - dotty/scala3 与 scala-native 和 scala-js 等技术的无缝集成如何?

我们应该注意哪些限制?它会要求我们使用一些类似 scalafix 的工具吗?还是开箱即用?

0 投票
3 回答
230 浏览

scala - Scala / Dotty - 将特征混合到现有对象中

有没有办法将特征混合到 Dotty 或 Scala 中的现有对象中?

这个答案提供了一个宏观解决方案,但它已经 7 岁了,我希望(手指交叉!)更简单的东西。

0 投票
1 回答
164 浏览

scala - 无法重写递归调用:它不在尾部位置

我一直在玩 Dotty 并尝试实现一个简单的 List。这就是我实现它的方式:

我遇到的问题是这个实现无法编译Cannot rewrite recursive call: it is not in tail position

在另一个文件上,我尝试了相同的实现,使用标准库的列表,它编译:

也许我只是累了,没有看到明显的错误,但也许这里还有别的东西?extends List[Nothing]我必须添加以使代码编译引起的任何奇怪之处?

谢谢!

编辑

0 投票
0 回答
48 浏览

scala - 更新 Dotty 中数组给定索引处的元素(未来的 Scala3)

在 scala2 中:

更新操作有效, arr 变为:

但是在dotty中:

我发现 arr 没有改变

在 dotty 中,当我尝试通过 for 表达式更新数组的每个元素时:

神奇的是,它改变了:

我很困惑为什么 val 数组不能在 for 表达式中更新到位,它可以工作。

0 投票
2 回答
383 浏览

scala - Scala 3 中的类型推断变化

Scala 3 会给类型推断带来哪些变化?当前文档仅说明TODO。例如,

弱一致性

斯卡拉 2.13

Scala 3 (dotty 0.24.0-RC1)

平等

斯卡拉 2.13

斯卡拉 3

0 投票
0 回答
131 浏览

scala - 联合类型 LUB 和超类型 LUB 之间的区别

形状列表推断为,List[Shape]但盒装形状列表推断为List[Box[Square | Circle]]

为什么res0不键入与List[Square | Circle]对称List[Box[Square | Circle]],反之亦然?

Dotty根据联合类型定义最小上限

一组类型的最小上界 (lub) 是这些类型的并集。这取代了Scala 2 规范中最小上限的定义。

与此变化相关的统一规则是什么?