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

scala - 类型更高的 lambda

Dotty中给出以下内容:

我想“简化”BaseCreate这样我可以Create像这样实现:

我试过了:

但是编译器抱怨:

这对我来说没有意义。什么是正确的语法,如果有的话?

使用此代码链接到 scastie

PS:我不想再向BaseCreate. 尤其是F因为这意味着该类Domain.Create将需要final case class Create[F[_]]完全不是预期的解决方案。

0 投票
1 回答
310 浏览

scala - 2 不同类中具有相同名称的扩展方法在Scala 3中不起作用?

我有以下情况:

这给了我以下编译异常:

Scala 3中扩展方法的命名是否有限制

请参阅Scastie上的示例

0 投票
1 回答
189 浏览

scala - Extension vs infix trait methods for Dotty Type Classes

I went through the documentation and found a couple of ways how to define ad-hoc behavior for type class instances. Here's the original example:

The funny thing is we could define a bunch of ordinary infix methods alongside with extensions. The user expected behavior should be the same (despite the implementation differences).

Here's the example which illustrates that:

Since both constructs are doing the same thing (in different ways), it rises a question: which way is the most idiomatic? If both, in which situations each works best?

Thanks!

0 投票
1 回答
182 浏览

scala - Dotty 是否支持改进?

我害怕阅读 Scala 3 会带来什么,特别注意复合类型的变化。它们总是有点像黑客,所以干净、真正的交叉口类型肯定是一种改进。我找不到关于复合类型的实际细化部分发生了什么的任何信息。在我当前的项目中,我严重依赖于强交织类型,以试图让每个返回值尽可能窄。因此,例如,拥有

甚至还有可能吗?如何用新的语义来实现这个目标?据我了解,抽象类型的改进几乎肯定是不允许的,因此在类型层次结构的根中很难有一个“自我类型”声明:

在一个有点相关的注释中,我正在研究结构类型。我必须说我喜欢我们如何使用静态声明来动态选择/实现成员。抽象类是否可能?我可以写类似的东西:

编辑:我找到了相关的文档,看起来匿名Selectable实例不受匿名类的类型是其扩展类型的交集的规则的约束——很好。

0 投票
0 回答
83 浏览

scala - sbt 对依赖项和编译器使用不同的 scalaVersion (Dotty nightly)

我想针对最新的 Dotty 0.28 nightly builds 测试一个项目,同时它需要最近为 Dotty 0.27.0-RC1 发布的许多依赖项。在不讨论二进制兼容性的问题的情况下,是否存在——出于测试目的,看看 Dotty 中的修复是否适用于之前崩溃 dotc 的项目——一种为所使用的编译器指定build.sbt 不同 scala 版本的方法(我想要 0.28. 0-...-NIGHTLY)和依赖项查找(我想要 0.27.0-RC1)?

我不希望编辑所有内容libraryDependencies以更改% "foo"for % "foo_0.27.0-RC1",但想要一种全局方式来启用此行为。

0 投票
1 回答
116 浏览

scala - Scala 3 中还存在 volatile 类型吗?

我找不到与 Scala 3 等效的 SLS。我正试图慢慢让自己进入 Scala 3 的思维模式并编写新代码——并在下次更改时重构旧代码——以便将其转换为 Scala 3 很简单。当前某些类型投影的用例是避免 volatile 类成员的(非常)间接结果。

0 投票
1 回答
55 浏览

scala - 如何在隐式中将类型投影转换为 PDT?

这是一个惯用的 scala 2 示例:

如您所见,它已经部分转换为使用路径相关类型。但是如何为引用Mapper的类型(例如自身)创建隐式值?理想情况下,这是一个在 Scala 2 和 Scala 3 之间具有直接等价性的解决方案。Oself.ContentO =:= self.Content

0 投票
0 回答
86 浏览

scala - Scala3/Dotty 显式空值 Scala2 互操作

我正在查看 Dotty 文档,但我对Explicit Nulls有疑问

看起来它可以与 Java 互操作性一起使用,但是 Scala 2.x 库呢?
类型是String|Null用于返回 a 的 scala 函数String还是假设我们不会为它们提供 null ?

0 投票
1 回答
566 浏览

scala - Scala 3 - 在一阶类型上提取包装器和 InverseMap 元组

我正在尝试创建一个函数,该函数采用更高种类的类型的元组并将函数应用于更高种类的类型中的类型。

在下面的示例中,有一个trait Get[A]which 是我们的高级类型。还有一个 Get 的元组:(Get[String],Get[Int])以及来自 的函数(String,Int) => Person

Scala-3 有一个称为 InverseMap 的 Match-Type,它将类型 (Get[String], Get[Int]) 转换为本质上的类型 (String,Int)。

因此,最终目标是编写一个函数,该函数可以接受具有任意数量Get[_]类型的元组和一个输入与 InserveMap 类型匹配的函数,最后返回 a Get[_],其中包装的类型是函数的结果。

我试图创建一个genericF下面调用的函数来显示所需的行为,尽管它可能不正确——但我认为它至少显示了正确的意图。

我在这里设置了一个 Scastie:https ://scastie.scala-lang.org/OleTraveler/QIyNHPLHQIKPv0lgsYbujA/23

0 投票
1 回答
142 浏览

scala - 如何确保元组是同质的?

由于我无法控制的原因,我的方法以元组的形式接收输入。这个元组应该只包含 的实例Foo,即它应该看起来像(Foo, Foo ... Foo)并且不应该有StringorInt在里面。我想在编译时检查这一点,而不是在运行时抛出异常。我怎样才能做到这一点?

以下是我目前拥有的代码,这是不正确的:

我愿意使用 Shapeless 或 Dotty/Scala 3 中引入的新功能。