Die Data.Vector.Generic.Vector
typeclass nimmt zwei Argumente Typ, und v
a
wo v :: * -> *
die Art des Behälters und a :: *
ist die Art der Elemente in dem Behälter. Dies ist einfach eine generische Schnittstelle für die im Paket vector
definierten Vektortypen, insbesondere Data.Vector.Unboxed.Vector
.
Dies bedeutet im Wesentlichen, dass der Typ v
in der Lage sein muss (Double, Double)
und Double
zu halten, obwohl nicht gleichzeitig. Wenn Sie v ~ Data.Vector.Unboxed.Vector
verwenden würden, dann funktioniert das ganz gut. Der Grund liegt an der Implementierung von correlation
, die unzip
verwendet. Diese Funktion teilt eine v (a, b)
in (v a, v b)
. Da correlation
an v (Double, Double)
arbeitet, benötigt es die zusätzliche Einschränkung, die v
Double
s halten kann.
Dieser generische Typ soll die Funktion correlation
mit mehr Typen als Data.Vector.Vector
arbeiten lassen, einschließlich aller Vektorstiltypen, die möglicherweise in anderen Bibliotheken implementiert sind.
Ich möchte betonen, dass diese Einschränkungen
Data.Vector.Generic.Vector v (Double, Double)
Data.Vector.Generic.Vector v Double
Staat, dass egal welcher Art Sie wählen, für v
fähig ist (Double, Double)
zu halten und ist auch in der Lage Double
zu halten. Dies gibt bestimmte Voraussetzungen für Ihren Vektortyp an, nicht die tatsächlichen Inhalte des Vektors. Der tatsächliche Inhalt des Vektors wird im ersten Argument der correlation
-Funktion angegeben.
Ich bin mir nicht sicher, wo Sie "im Zusammenhang mit von" bekommen haben. Was es bedeutet, ist näher zu "Wenn die Einschränkungen auf der linken Seite erfüllt sind, existiert eine Funktion mit dem Typ, der auf der rechten Seite angegeben ist". – Cubic