型レベルプログラミング
Proxy 型の代わり
symbolVal や typeRep は以下のような型になっている
proxy
型ではなく proxy
という型変数であれば何でも使える。実際には以下のように使う。
ここで symbolVal
の proxy
に Maybe
を使おうとすると問題が発生する
これは Maybe
型に Just
コンストラクタが含まれるためである。
a :: Symbol
というカインドがつくため、(->) :: Type -> Type -> Type
とカインドが合わないことが問題。
コンパイルを通すために Proxy a に変更した
よって、カインドが Type
の場合は Maybe
や []
でも代用可能だが、それ以外の場合は Proxy
を使うことになる
参考リソース
Last updated