在 Scala 3 中派生不透明类型的类型类实例

ale*_*ini 5 scala typeclass deriving scala-3 derivingvia

Scala 3 中有没有办法将derives关键字与不透明类型别名结合使用?最好有一种无样板的方法,通过自动依赖基础类型(如果有)的相同类型类的实例来为给定的不透明类型别名提供类型类实例。

如果能够表达类似的东西就好了

opaque type Id = Int 
object Id:
  given Show[Id] = Show.intShow
Run Code Online (Sandbox Code Playgroud)

对于某些假设的类型类Show,如

opaque type Id = Int derives Show
Run Code Online (Sandbox Code Playgroud)

小智 5

您可以看到syntax.md,目前还没有这样的构造。

另外,即使这样的语法可用,我也不确定这是否应该是默认行为。使用 s 的动机opaque type是将新类型与底层类型区分开来。虽然我明白为什么它会很有用,但不是默认的。

也许类似于 Haskell 的东西deriving via可能是一个很好的补充。它可能是SIP的良好候选者。