Tampaknya menjadi terkenal bahwa bahasa pemrograman tidak dapat memiliki jumlah, produk, dan nonterminasi bersama.
Q1 . Apakah ini benar? Di bawah ini (atau di tautan di atas saya berikan) adalah argumen parsial.
Namun, pemrograman Generik Hinze dengan Adjunctions mengabaikan masalah ini, bahkan setelah membahas dengan tepat kategori mana yang terlibat. Secara khusus, ia berbicara (tampaknya tanpa keberatan) tentang Haskell dimodelkan oleh kategori pesanan parsial terus menerus yang ketat dan memiliki jumlah dan produk. Tetapi kita tahu bahwa Haskell tidak memiliki jumlah (benar?). (Bagian dari makalah ini menggunakan S e t sebagai gantinya, tetapi itu tidak memungkinkan untuk non-penghentian).
Q2 Jadi, apa yang saya lewatkan? Saya melihat empat opsi:
- Orang-orang sering mengabaikan non-terminasi dengan sengaja ketika mendiskusikan Haskell. Mungkin makalah ini juga melakukannya. Tapi mengapa orang menyebutkan CPO?
- Hambatan yang saya diskusikan dapat dihindari dengan cara yang cerdas. Secara khusus, kertas memodelkan fungsi Haskell yang tidak ketat dengan fungsi yang ketat f : A ⊥ → B , karena alasan lain.
- Makalah itu menyebutkan batasannya dan saya melewatkannya. Saya telah berusaha untuk mencari sebutan ini dan gagal menemukannya.
- Ini adalah kesalahan aktual, dan karena semua orang terus-menerus mengklaim Haskell memang tidak memiliki jumlah kategorikal (seperti yang disepakati orang lain), meskipun makalah itu mengklaim
Either
hal semacam itu. Semuanya bekerja dengan baik dalam bahasa total dengan tipe induktif dan coinductive.
Latar Belakang
Ini berarti, misalnya, bahwa kategori set runcing , dengan objek nolnya, tidak dapat ditutup bicartesian.