如何解决在类型函数中使用匹配类型时证明类型相等的问题
给定
type Bool
type True <: Bool
type False <: Bool
和
type Neg [B <: Bool] <: Bool =
B match
case True => False
case False => True
编译(这里没有惊喜):
summon [Neg [True] =:= False]
但令人惊讶的是,这并没有:
summon [Neg [False] =:= True]
这似乎取决于类型匹配中的大小写顺序 - 如果我更改 Neg
中的分支顺序,Neg [False]
会起作用,但 Neg [True]
不会?!>
Scala 3.0.0-RC3
编辑:
这按预期工作(Neg
不变):
trait Bool
class True extends Bool
class False extends Bool
这也是:
trait Bool
object True extends Bool
object False extends Bool
type True = True.type
type False = False.type
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。