问题标签 [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 投票
2 回答
67 浏览

scala - 具有协方差的交集类型

考虑以下内容:

当我们重写childreninCC时,被重写的方法是顶级方法的合并实体。因此返回类型List[AA] & List[BB]是有意义的。

我不明白的是,下面是如何编译的?

List 是协变的,因此(这里是proof的来源):

DD如果也 只能编译List[AA] & List[BB] <: List[AA & BB]。这是真的吗?如果是这样,那么不是List[AA] & List[BB] =:= List[AA & BB]。请建议


在我看来List[AA & BB] =:= List[AA] & List[BB]。考虑一下:

0 投票
1 回答
80 浏览

scala - 在 Dotty Scala 中访问嵌套类型参数

我想用新的 Scala Dotty 编译器做这样的事情:

或者至少

但编译器抱怨 Not found: type A

有没有办法访问类型参数的类型参数?还是具有相同最终结果但做不同的事情?

我知道你可以在这里创建一个 Monad:https ://dotty.epfl.ch/docs/reference/contextual/type-classes.html 但是拥有一个 Monad 类可以让我在同一个地方声明一个 Monad 类它是定义的,并且在我的风格上也更有意义。

有没有办法做到这一点?

0 投票
1 回答
234 浏览

scala - scala 3宏如何实现通用特征

我想实现proxy一些特征A(例如,将方法调用委托给一些 rpc 调用),就像这样

但是编译器抱怨

0 投票
1 回答
111 浏览

scala - 在 Scala 3 中打印 MirroredElemTypes

我正在尝试修改标准示例以打印具有类型的值。我被困住了p.MirroredElemTypes。我还没有找到任何 API 来遍历和字符串化类型。

0 投票
1 回答
61 浏览

scala - 是否可以在 Scala 3 中使用类似于打字稿映射类型的另一种类型来包装成员类型?

在打字稿中它看起来像这样

我想拥有

是否有可能在 Scala 3 中实现这样的目标?

0 投票
1 回答
131 浏览

scala - Scala 3 美味的反射宏:CyclicReference

我正在尝试访问作为宏实现的方法的参数。

呼叫站点可能类似于:

现在,CyclicReference当宏展开时,我在defSym.tree. 我知道这defSym.tree是循环的,因为它包含当前扩展宏的代码,但我仍然需要访问方法定义的“树”版本来访问其名称和参数,而不需要方法的主体。我怎样才能在不骑自行车的情况下获得这些信息?

0 投票
1 回答
128 浏览

scala - 如何在 Scala 3 中声明并将参数传递给隐式参数?

我在scala 2中有这个代码

这里 x对函数的参数进行了count注释,implicit因此它可以double隐式传递给函数。Scala 3在使用给定使用/召唤时如何做到这一点?

0 投票
1 回答
136 浏览

scala - Scala 3 (Dotty) 中命名给定/使用对象的语法

是否有一种单行方式来提供对一个值的命名using引用,该值在没有即将被弃用的implicit关键字的情况下隐式可用(即通过语法可用)?根据文档,我希望以下工作(在 SBT 下,scalaVersion := "3.0.0-M2"

但这失败了

现在:我可以通过多种方式解决这个问题,但要么文档令人困惑(或错误),要么我误解了一些相当基本的东西。

解决方法 1(如此建议):

但我希望能够用一个表达式而不是两个表达式来做到这一点。相同的注释适用于先定义给定,然后将其绑定到名称:

特别是因为我认为implicitly将在 3.1 中弃用并在 3.2 中消失。

我们还可以将给定对象的调用包装在函数中来解决这个问题:

但这对我来说似乎是样板。

0 投票
2 回答
264 浏览

scala - 不能在自写的 monad 实例上使用 flatMap 作为扩展方法

我尝试在 WriterT 上使用 flatMap 并且成功了。

所以问题可能出在我的类型上,但我找不到它有什么问题。

错误是:

值 flatMap 不是 Main.Optional[Int] 的成员。
尝试了扩展方法,但无法完全构造:
cats.syntax.flatMap.toFlatMapOps([A] =>> Any), A(given_Monad_Optional)

0 投票
2 回答
273 浏览

scala - 如何在 Scala 3 / Dotty 中实现 MapK 之类的类型?

我试图让这样的东西在 Scala 3 中工作但未能成功:

像这样使用:

在有效的 Scala 2 中,只需要通过替换*?替换来调整语法_(当然除了_*)。

然而,在 Scala 3 中,基本上每一行都出现“不可还原地将高级类型应用于通配符参数”的错误:Scastie

文档说存在类型已在 Scala 3 中被删除,但是他们并没有真正给出如何处理这个问题的任何重要示例。

文档提到“存在类型在很大程度上与路径相关类型重叠”——这个 MapK 可以用路径相关类型实现吗?我读过这个,但不明白如何应用它,或者在我的情况下是否可能。

而且,如果不是路径依赖类型......那又如何?Scala 似乎不太可能“简化”到无法再实现此功能的地步,所以我一定遗漏了一些东西。

ETA:除了下面我自己的答案之外,我还制作了这个 repo并写了这篇关于在 Scala 3 中编码 MapK 的各种方法的文章。