は、私はすべてが同様のパターンに合うカップル型の別名を持っています。Polykinded型の組成物
type Foo = Bar `Compose1` Qoox
type Faa = Bar `Compose1` Qaax
type Moo = Fez `Compose2` Rxoo
type Maa = Fez `Compose2` Rxaa
-- ...
をしかし、私は基本タイプが異なる種類であるため、複数Compose
タイプを定義する必要がキープ:newtypesを定義するのではなく、私はタイプレベル合成を行うことができれば、それはきちんとしただろうと思いました。私が好きな何
は、だから私はちょうど
type Foo = Bar . Qoox
type Faa = Bar . Qaax
type Moo = Fez . Rxoo
type Maa = Fez . Rxaa
-- ...
を行うことができます。しかし、私は「それはHaskellの現在の能力を超えてかもしれない、と私はドン疑う
type family (.) (m :: k1 -> k) (n :: k2 -> k1) :: k2 -> k where
polykindedタイプレベルの関数であります不可能なものを実装しようとする時間を無駄にしたくない。
GHC8で利用可能な拡張機能を使用して、このような構成をHaskellで行うことはできますか?