问题标签 [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 回答
408 浏览

scala - 如何在 dotty 中使用缩小的 String 类型的元组大小写头部编写匹配类型模式?

我目前正在尝试了解 Scala 3/dotty 中的新功能。所以我想重做一些我以前用 shapeless 尝试过的东西。"a" :: "c" :: "f" :: HNil给定一个缩小字符串类型的异构列表(在我理解的无​​形中,它会是无形的,并且可以使用元组("a", "c", "f")),我想根据一些映射替换类型。例如考虑以下伪代码:

为此,我想出了以下代码。重新映射单个缩小的 String 类型正在工作。但我也无法让它与元组一起使用:

我得到的编译错误Type argument s does not conform to upper bound String在以下行:

我使用了 dotty 版本0.18.1-RC1,因为它是 Scastie 上最新可用的版本。这是您可以尝试的链接:https ://scastie.scala-lang.org/BKzhEV7PRiKyfQ3CE2vjww

这不支持吗,有没有办法实现这一点,即如何进一步限制匹配类型中的类型模式(我试过case (s <: String) *: rest =>,但编译器失败并出现错误:)scala.MatchError: Parens(Ident(s)) (of class dotty.tools.dotc.ast.untpd$Parens)?还有更好的方法来实现我总体上尝试做的事情(在 dotty 的当前能力范围内,比如erasedand inline)?

0 投票
1 回答
139 浏览

scala - 如何使隐式可用于内部功能

我想在包装函数中定义隐式值并使其可用于内部函数,到目前为止,我设法通过从包装器传递隐式变量来做到这一点:

是否可以避免implicit b: B =>implicit val b: B = B()提供给内部功能块?

0 投票
1 回答
134 浏览

scala - 使用 doc 命令编译和运行 dotty 代码

我克隆了dotty并将其添加到我的PATH(我是Linux用户)之后,我使用dotty创建了HelloWorld项目并尝试使用dotcdotr命令编译和运行它,如下所示:

我收到了这个错误:

有什么建议么 ?

0 投票
1 回答
182 浏览

scala - 新的 dotty 运行时完全死在我身上

周六早上在这里。尝试学习新的 Scala 编译器 dotty。

使用安装在我的 Mac 上

安装成功。我有版本

创建的目录

把这段代码写在Hello.scala

我能够编译它

.class有一堆.tasty文件

接下来我做了

现在我得到了一个错误的大规模“爆炸”,dotr 运行时完全死亡并退出。

我做了什么导致这次爆炸?这不是一个友好的错误消息。

0 投票
2 回答
389 浏览

scala - Dotty 无法推断具有抽象类型的类型参数特征的通用 Scala 函数的结果类型

一个简单的价值层次

想象一下这个简单的特征Value,其中每个实现类都有value某种类型T

我们有两个不同的实现类分别表示IntString值。

键入安全的值选择

如果我们有一个List值,我们希望有一种类型安全的方式来选择特定类型的所有值。类Values及其伴随对象帮助我们做到这一点:

所有这些在 Scala 2.13 和 Dotty 0.20.0-RC1 中都可以正常工作,因此有一个混合值列表……</p>

…我们可以选择元素并将它们作为正确的类型返回——所有这些都在编译时检查:

在 Dotty 中选择一个值Option[T]失败

但是,如果我们添加这个函数来选择值作为它们的T类型(即IntString)并将其作为Option…</p>

…然后在 Scala 2.13 中一切正常:

但在 Dotty 0.20.0-RC1 中,这不能编译:

我们可以通过添加一个类型参数来解决这个问题,getValueInnerOption它将返回类型和抽象类型T联系在一起,并允许我们指定返回类型。

不幸的是,这意味着我们将不得不在调用站点添加T(ie Intor String) 的实际类型,这很遗憾,因为它只是样板文件。

Dotty 中的错误或该怎么办?

似乎 Dotty 已经知道上限T是什么,但无法将该知识传播到函数的结果类型。String如果尝试从 an请求 a 可以看出这一点IntValue

那么原始代码(没有类型参数U)是否可以在最终的 Scala 3.0 中工作,还是需要以不同的方式编写?

0 投票
1 回答
711 浏览

scala - 在 scala 2 或 3 中,是否可以在运行时调试隐式解析过程?

在 Scala 语言中,隐式解析通常在编译时完成,有时会引发混淆错误信息,此类错误的一个著名示例是当无形 Generic 引发错误信息时,例如:

(详见https://books.underscore.io/shapeless-guide/shapeless-guide.html

解决这个问题的方法是在运行时运行隐式解析算法(内部应该是图查询算法),这至少有两个好处:

  • 调试工具可用于逐步重现解决过程,因此即使错误信息和文档不完整,也很容易发现错误。

  • 在许多情况下,类型信息可能无法在编译时确定(例如,类型取决于控制流)。如果隐式转换不能延迟到运行阶段,定义隐式转换的许多好处将无效。

所以我的问题是,Scala 2.x 或 Dotty 中是否存在此功能?还是在路线图上?

非常感谢您的意见。

0 投票
3 回答
374 浏览

scala - 如何在 Dotty 中使用给定?

我正在查看页面Dotty下的文档Contextual Abstractions,我看到了Given Instances.

给定的实例(或者简单地说,“给定的”)定义了某些类型的“规范”值,这些值用于综合给定子句的参数。例子:

但是文档中的这个示例从未解释过如何使用given. 我拉了测试Dotty示例项目并尝试使用它,但我不太了解它。

它是一个新的关键字吗?我们进口它吗?还是我错过了什么。

0 投票
2 回答
948 浏览

scala - 如何使用宏在 Dotty 中生成一个类?

是否可以在 Dotty, Scala 3 中生成带有宏的新类?

兹拉亚

0 投票
1 回答
446 浏览

scala - 如何在dotty中解包元组中的元素类型?

假设我有一个类定义为:

我想编写一个通用方法,将 tuple 解压缩为type(Box[A1](a1), .., Box[An](an))的 tuple 。(a1, .., an)(A1, .., An)

我试过Match Types没有运气:

0 投票
3 回答
208 浏览

scala - 如何将两个元组与兼容的类型结合起来?

假设我有两个元组,第一个是类型为值的元组(V1, V2, .., Vn)

第二个是类型为函数的元组(V1 => V1, V2 => V2, .., Vn => Vn)

现在我想将这两个元组(f1(v1), v2(v2), .., fn(vn))与 type结合起来(V1, V2, .., Vn)

我不知道如何在scala 3.0(即dotty)中得到这个。

编辑:我查看了 shapeless 的源代码并得到了一个(部分工作)解决方案:

我不知道为什么apply方法的返回会丢失它的类型。