问题标签 [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.
scala - 具有协方差的交集类型
考虑以下内容:
当我们重写children
inCC
时,被重写的方法是顶级方法的合并实体。因此返回类型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]
。考虑一下:
scala - 在 Dotty Scala 中访问嵌套类型参数
我想用新的 Scala Dotty 编译器做这样的事情:
或者至少
但编译器抱怨 Not found: type A
有没有办法访问类型参数的类型参数?还是具有相同最终结果但做不同的事情?
我知道你可以在这里创建一个 Monad:https ://dotty.epfl.ch/docs/reference/contextual/type-classes.html 但是拥有一个 Monad 类可以让我在同一个地方声明一个 Monad 类它是定义的,并且在我的风格上也更有意义。
有没有办法做到这一点?
scala - scala 3宏如何实现通用特征
我想实现proxy
一些特征A
(例如,将方法调用委托给一些 rpc 调用),就像这样
但是编译器抱怨
scala - 在 Scala 3 中打印 MirroredElemTypes
我正在尝试修改此标准示例以打印具有类型的值。我被困住了p.MirroredElemTypes
。我还没有找到任何 API 来遍历和字符串化类型。
scala - 是否可以在 Scala 3 中使用类似于打字稿映射类型的另一种类型来包装成员类型?
在打字稿中它看起来像这样
我想拥有
是否有可能在 Scala 3 中实现这样的目标?
scala - Scala 3 美味的反射宏:CyclicReference
我正在尝试访问作为宏实现的方法的参数。
呼叫站点可能类似于:
现在,CyclicReference
当宏展开时,我在defSym.tree
. 我知道这defSym.tree
是循环的,因为它包含当前扩展宏的代码,但我仍然需要访问方法定义的“树”版本来访问其名称和参数,而不需要方法的主体。我怎样才能在不骑自行车的情况下获得这些信息?
scala - 如何在 Scala 3 中声明并将参数传递给隐式参数?
我在scala 2中有这个代码
这里 x
对函数的参数进行了count
注释,implicit
因此它可以double
隐式传递给函数。Scala 3
在使用给定使用/召唤时如何做到这一点?
scala - Scala 3 (Dotty) 中命名给定/使用对象的语法
是否有一种单行方式来提供对一个值的命名using
引用,该值在没有即将被弃用的implicit
关键字的情况下隐式可用(即通过语法可用)?根据文档,我希望以下工作(在 SBT 下,scalaVersion := "3.0.0-M2"
:
但这失败了
现在:我可以通过多种方式解决这个问题,但要么文档令人困惑(或错误),要么我误解了一些相当基本的东西。
解决方法 1(如此处建议):
但我希望能够用一个表达式而不是两个表达式来做到这一点。相同的注释适用于先定义给定,然后将其绑定到名称:
特别是因为我认为implicitly
将在 3.1 中弃用并在 3.2 中消失。
我们还可以将给定对象的调用包装在函数中来解决这个问题:
但这对我来说似乎是样板。
scala - 不能在自写的 monad 实例上使用 flatMap 作为扩展方法
我尝试在 WriterT 上使用 flatMap 并且成功了。
所以问题可能出在我的类型上,但我找不到它有什么问题。
错误是:
值 flatMap 不是 Main.Optional[Int] 的成员。
尝试了扩展方法,但无法完全构造:
cats.syntax.flatMap.toFlatMapOps([A] =>> Any), A(given_Monad_Optional)
scala - 如何在 Scala 3 / Dotty 中实现 MapK 之类的类型?
我试图让这样的东西在 Scala 3 中工作但未能成功:
像这样使用:
在有效的 Scala 2 中,只需要通过替换*
和?
替换来调整语法_
(当然除了_*
)。
然而,在 Scala 3 中,基本上每一行都出现“不可还原地将高级类型应用于通配符参数”的错误:Scastie。
文档说存在类型已在 Scala 3 中被删除,但是他们并没有真正给出如何处理这个问题的任何重要示例。
文档提到“存在类型在很大程度上与路径相关类型重叠”——这个 MapK 可以用路径相关类型实现吗?我读过这个,但不明白如何应用它,或者在我的情况下是否可能。
而且,如果不是路径依赖类型......那又如何?Scala 似乎不太可能“简化”到无法再实现此功能的地步,所以我一定遗漏了一些东西。
ETA:除了下面我自己的答案之外,我还制作了这个 repo并写了这篇关于在 Scala 3 中编码 MapK 的各种方法的文章。