カインドとは?
かいんど
カインドとは、型の「型」にあたる概念であり、型コンストラクタの引数の数や種類を表す型理論の用語です。
カインド(Kind)とは、型理論において型を分類するための上位概念、すなわち「型の型」です。値に型があるように、型にはカインドがあります。
最も基本的なカインドは*(スター)で、これは具体的な値を持てる型(Int、String、Boolなど)のカインドです。一方、型引数を一つ受け取って具体型になる型コンストラクタ(Maybe、Listなど)は* → *というカインドを持ちます。二つの型引数を受け取るEitherのようなコンストラクタは* → * → *というカインドになります。
カインドが重要になる場面として、
- 高階多相(Higher-Kinded Types, HKT):型コンストラクタを引数に取る抽象化が可能になる
- 型クラスや型推論:HaskellやScalaではカインドを利用してFunctorやMonadなどの抽象型クラスを定義する
- 型安全なジェネリクス:Rustのトレイトや型パラメータもカインドの考え方と関連する
Haskellはカインドを明示的に扱う言語として知られており、:kindコマンドでGHCi(対話環境)においてカインドを確認できます。ScalaのHKTはJavaやKotlinにない高度な型抽象化を可能にし、cats・ZIOといったライブラリの基盤になっています。
カインドの概念はプログラミング言語理論の高度なトピックですが、型安全なライブラリ設計や関数型プログラミングの深い理解に欠かせない基礎概念です。
使い方・例文
HaskellでMaybeは* → *というカインドを持ち、Maybe Intのように具体型を渡して初めて*(具体型)になります。カインドが合わない型コンストラクタの組み合わせはコンパイルエラーになります。
この用語をシェア
最終更新: