Ist coproduct dasselbe wie sum types?

9

Ich beobachtete diesen Vortrag von Bartosz Milewski und er erklärte Koprodukt- und Summentypen.

In der Vorlesung ging er von einem zum anderen.

Ist das Nebenprodukt dasselbe wie der Summentyp?

    
Felipe Gusmao 23.04.2017, 15:23
quelle

1 Antwort

12

Grundsätzlich ja. Koprodukte sind grundsätzlich allgemeiner, müssen dies aber nicht Was Haskell angeht, betrifft Sie das notwendigerweise.

Ein Beispiel für eine Kategorie, in der das Koprodukt kein Summentyp ist, ist die Kategorie von Vektorräumen mit linearen Abbildungen wie die Pfeile. In dieser Kategorie sind Disjunktionssummentypen nicht sehr sinnvoll, weil sie Ihnen zwei verschiedene Nullvektorelemente geben würden.

Stattdessen stellt sich heraus, dass product -Typen (die in der linearen Algebra direkte Summen heißen) >, aber Implementierungsweise sind sie Tupel, keine Alternativen) sind ein Koprodukt in dieser Kategorie:

%Vor%

(Das Standardprodukt in dieser Kategorie ist dann das Tensor-Produkt . Obwohl es möglich ist, dies zu ignorieren und Verwenden Sie gewöhnliche Tupel als Produkttyp, dh die tatsächlichen Coproducts. Ich denke, das hat damit zu tun, dass jeder Hilbert-Raum isomorph zu seinem Doppelraum ist. In meinem constrained-categories / linearmap-category Bibliothek, die Produkte sind Tupel, während Mike Izbicki hat dies nicht in der topisch ähnlichen SubHask -Bibliothek getan.) Siehe Derek Elkins Kommentar.

Ich verstehe "sum type" im Datensinn, d. h. als algebraischen Datentyp mit der Struktur einer markierten Vereinigung.
leftaroundabout 23.04.2017, 15:54
quelle

Tags und Links