Scala 3 有没有办法使用derives
关键字与不透明类型别名结合使用?
最好有一种无样板的方法,通过自动依赖基础类型(如果有)的相同类型类的实例来为给定的不透明类型别名提供类型类实例。
如果能够表达类似的东西就好了
opaque type Id = Int
object Id:
given Show[Id] = Show.intShow
对于一些假设的类型类Show
, as
opaque type Id = Int derives Show
你可以看到在syntax.md https://github.com/lampepfl/dotty/blob/main/docs/_docs/internals/syntax.md目前还没有这样的构造。
另外,即使这样的语法可用,我也不确定这是否应该是默认行为。使用背后的动机opaque type
s 是为了区分新类型和底层类型。虽然我明白为什么它会很有用,但不是默认的。
也许类似于 Haskell 的东西deriving via https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/deriving_via.html这里可能是一个很好的补充。
它可能是一个很好的候选者SIP https://www.scala-lang.org/blog/2022/07/13/scala-improvement-process-reloaded.html.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)