回答:
Haskellには完全な依存型はありませんが、DataKinds
やなどの拡張機能を使用すると非常に近いものになりTypeFamilies
ます。現時点での問題は、私が知る限り、値レベルのHaskellには明確なボトムがありますが、タイプレベルのHaskellにはないということです。
これは、値のDataKind
-lifting など、他の型よりも型をパラメータ化することを妨げるものではありません。GHC 7.6以降、DataKinds
有効にすると、型レベルの自然と文字列、および型レベルのタプル、型レベルのリスト、および任意の(非高次、非一般化の型レベルのリフティングを使用できます、制約なしの代数データ型。テンプレートで整数を使用するC ++の機能に似ています(ただし、より一般的です)。
Ptharien's Flameが現在の状態についてうまく説明していることを少し拡張するために、GHC Haskellは各バージョンで(相分離を維持しながら)依存型の方向にさらに進んでいるようです。
そのため、たとえば今年9月のICFP 2013では、このプロセスの次のフェーズに関するペーパー「依存型付けHaskellに向けて:種類の平等を伴うSystem FC」で、種類と型レベルの折りたたみについて説明します。されたいくつかの3年前の計画であることを発表しました。
さらに、次のステップについても言及しています。「Adam Gundryの今後の論文にはSystem FCのバージョンにtypeタイプが含まれることに気づいています。この機能をソース言語でも利用できるようにしたいと思います。
Haskellは伝統的にそれを偽造しようとしましたが、最終結果ははるかに大きく、一見反復する型システムです。しかし、これはすぐに変わるかもしれません!見る: