回答:
適切なことはセットアップすることです
data ListF a x = Nil | Cons a x
今、あなたは書くことができます
newtype Mu f= Mu (forall a.(f a->a)->a)
data Nu f = forall a. Nu a (a->f a)
Haskellではそれを観察しMu ListF
てNu ListF
一致させることができます。つまり、どちらか(!)(この主張に関する1つの情報源:http : //www.cs.ox.ac.uk/jeremy.gibbons/publications/adt.pdf)
さらに、ここで説明するように、すべてのリストの帰納法によって物事を証明し、有限なものを気にすることに限定する限り、機能する証明を得ることができます。http://www.cs.ox.ac.uk/jeremy.gibbons/ Publications / fast + loose.pdf
これに関する他の2つの参照は次のとおりです。
これは、設定方法に応じて、最大の固定小数点、つまり最終的な代数です。Haskellには帰納型はなく、共帰型のみがあるため、Haskellでは有限リストのデータ型を定義することは不可能です。多くの人々がこの特定の問題について否定しています。
[a]
Haskellで型のプロパティを帰納的に証明することはできません。これは、値のサブセット、つまり有限リストに対して行うことができます。しかし、これはあるではない何か[a]
です。