型コンストラクタ
Javaとかで Array っていうのは型ではない
Array<int> のようにしてはじめて型として扱える
引数を必要とする特殊な型 (ジェネリック型) だといわれたらアレだが
HaskellやPureScriptでは List Int は、List という型コンストラクタにInt型を突っ込んだ結果得られる型を表す
Int 型と書いたけど Int 型コンストラクタと見てもいいんだよな確か
None という値コンストラクタと None 値は正確には別だけど同一視される的な
型を一個突っ込んで型を得られる型コンストラクタは * -> * というカインドをもつ
PureScriptでは Type -> Type
* (Type) でない型コンストラクタは型ではないので、値をもたない
[] :: List ←ならない
型コンストラクタは型クラスのインスタンスになれる
functor(型クラス) はType -> Typeを要求する
A Functor is a type constructor which supports a mapping operation map.
https://pursuit.purescript.org/packages/purescript-prelude/6.0.1/docs/Data.Functor 強調は引用者