は、私がHistory of Haskellでいくつかのセクションを読んで、私が出会った:「高親和性多型」がどのようなタイプの問題を解決するのに役立ちますか?
をしかし、より高いkinded多型は、独立した有用性を持っている:それは高い種類の上にパラメータ化データ型を宣言するために、非常に便利な完全に可能であり、時折、以下のような:
「基本」のADTを知る
data ListFunctor f a = Nil | Cons a (f a)
私は少しここに困惑して、私の「推測」括弧内の部分は、「パラメトリック」/「ダイナミック」単項データコンストラクタf
ことを示唆しているということでしたか?だからどのような種類のデータコンストラクタ* -> *
"受け入れることができる"タイプa
?私の思考は正しいのですか、あるいは私は構文を誤解していますか?私は「ただ推測」していることを知っていますが、ここでこの機能についての「レイ・プログラマ」の直感を得ることを期待しています。このシナリオを必要とするサンプル・シナリオは大部分が想像できます。正確な方法)これにより、Haskellがそのような喜びを作って、evals
を閉じるようにしているそれらの「小さな埋め込み多目的再帰設定言語」-ADTにもっと柔軟に対応できます。上記のGHCiの、:i ListFunctor
で
が与える:
type role ListFunctor representational nominal
data ListFunctor (f :: * -> *) a = Nil | Cons a (f a)
だから、これは鮮明data
宣言から「推論」何のようです。
この容量の可能性を把握するための素晴らしい説明とうまく「現実の」シナリオ---多くの義務的な@chi! – metaleap