Es scheint bekannt zu sein, dass Programmiersprachen keine Summen, Produkte und Nichtterminierungen zusammen haben können.
Q1 . Ist das wahr? Unten (oder in dem obigen Link, den ich gegeben habe) ist ein Teilargument.
Die generische Programmierung von Hinze mit Adjunctions ignoriert das Problem jedoch, selbst nachdem etwas genau besprochen wurde , um welche Kategorie es sich handelt. Insbesondere spricht er (scheinbar ohne Vorbehalte) davon, dass Haskell durch die Kategorie von strengen kontinuierlichen Teilbestellungen modelliert wird und Summen und Produkte hat. Aber wir wissen, dass Haskell keine Summen hat (richtig?). (Ein Teil des Papiers verwendet stattdessen S e t , aber das erlaubt keine Nichtbeendigung).
F2 Also, was vermisse ich? Ich sehe vier Optionen:
- Menschen ignorieren oft absichtlich die Nichtbeendigung, wenn sie über Haskell sprechen. Vielleicht macht es dieses Papier auch. Aber warum sollte man dann CPOs erwähnen?
- Die Barriere, die ich diskutiere, kann auf clevere Weise vermieden werden. Insbesondere die Papiermodelle nicht streng Haskell Funktionen durch strenge Funktionen f : A ⊥ → B , aus anderen Gründen.
- Das Papier erwähnt die Einschränkung und ich habe das verpasst. Ich habe mich bemüht, nach dieser Erwähnung zu suchen, und keine gefunden.
- Dies ist ein tatsächlicher Fehler, und da alle behaupten, Haskell fehlen tatsächlich kategorische Summen (wie andere Leute zustimmen), obwohl die Papierbehauptungen
Either
so etwas sind. Stattdessen funktioniert alles gut in Gesamtsprachen mit induktiven und koinduktiven Typen.
Hintergrund
Dies bedeutet zum Beispiel, dass die Kategorie der spitzen Mengen mit ihrem Nullobjekt nicht bikartesisch geschlossen werden kann.