PS

Kind generalization

Type-level generics

Scalaでは、type-level generics(勝手にそう呼んでいた)が動かないのだが、 おおもとはSI-3443にあるようだ。たとえば

trait TypeFunction {
    type Domain
    type Codomain
    type apply[x <: Domain] <: Codomain
}

というkind(type-levelの型)の場合、Codomainを設定しても無視される、つまり

trait TypeFunction {
    type Domain
    type apply[x <: Domain]
}

と実質的に同じになってしまう。対応する見込みは無さそうである。 Haskellではkind-generalizationというらしい。

参考文献