Yang tepat adalah pengaturan
data ListF a x = Nil | Cons a x
Sekarang kamu bisa menulis
newtype Mu f= Mu (forall a.(f a->a)->a)
data Nu f = forall a. Nu a (a->f a)
Di Haskell kita bisa mengamati itu Mu ListF
dan Nu ListF
bertepatan. Jadi, bisa berupa (!). (satu sumber pada klaim ini: http://www.cs.ox.ac.uk/jeremy.gibbons/publications/adt.pdf )
Selain itu, kami dapat membuktikan hal-hal dengan menginduksi pada semua daftar dan mendapatkan bukti yang berfungsi selama kami membatasi diri untuk mengurus yang terbatas, seperti dijelaskan di sini: http://www.cs.ox.ac.uk/jeremy.gibbons/ publikasi / cepat + lepas.pdf
Dua referensi lain tentang ini adalah: