问题描述
SI-2712 Add support for partial unification of type constructors #5102 最初提供了 flag 下的功能
-Yhigher-order-unification
然后将其重命名为
-Ypartial-unification
因为根据
它似乎不是完全的高阶统一“部分类型应用程序推断”可能是一个更好的术语 这里发生的不是“高阶统一”,这是最 肯定不是
将其重命名为 -Ypartial-unification
以反映它没有的事实
实现一个通用的 HOU 算法。
部分统一与高阶统一有何不同?在什么意义上 Scala 没有实现高阶统一?当 Scala 无法执行 HOU 时,您能用具体的代码片段来演示吗?
解决方法
总的来说,如果“缺失”类型是最右边的类型,Scala 实现只会执行高阶统一。
Daniel Spiewak 用一个基本上是 Either
但左偏的类型的函子实例演示了这一点。