什么是类型投影有用?

时间:2011-08-12 20:28:47

标签: scala type-systems

Scala中的哪些类型投影有用?为什么Scala的类型系统支持类型投影和路径依赖类型?这个设计决定背后的理由是什么?

2 个答案:

答案 0 :(得分:13)

不是一个完整的答案,但我遇到过类型投影的一些用途:

  • 类型级别元编程。例如,请参阅Michid的系列(部分IIIIII),Jesper的implementation of HListseries at Apocalisp

  • 启用类型推断的解决方法(例如,以下是一些先前的SO问题123)。

  • 将一堆类型捆绑到单个类型参数中的方法。例如,在我正在开发的矩阵库中,我定义trait Scalar { type A; type B; type C; ... }然后将其作为单个参数传递给我的矩阵特征trait Matrix[S <: Scalar] ...。各个类型可以称为S#AS#B,等等。在Matrix[S]类型的两个矩阵之间,对于相同的S,这些类型将是兼容的(与路径相关类型的情况不同)。

答案 1 :(得分:9)

可以使用的一种类型投影是部分类型应用:

({type λ[x]=Tuple2[Int,x]})#λ