Ich habe die folgende Typdeklaration:Warum benötigt der folgende Typkonstruktor weniger Argumente als der Datenkonstruktor?
data Quadruple a b = Quad a a b b
(Einige von Ihnen könnten diese Erklärung von erkennen Yet Another Haskell Tutorial).
Ich verstehe die Absicht des Codes zu sein: erstellen Sie einen Datentyp namens Quadruple. Es hat einen einzelnen Typkonstruktor namens Quad, der vier Werte annimmt. Die ersten beiden Werte müssen denselben Typ haben, und die letzten beiden Werte müssen denselben Typ haben.
Ich habe Probleme, mir zu erklären, warum der Typkonstruktor weniger Argumente als der Datenkonstruktor benötigt. Die einzige Erklärung, die ich heraufbeschwören konnte, ist, dass Haskell aus der Typdeklaration schließen kann, dass, wenn der erste Wert vom Typ a ist, auch der zweite Wert, und wenn der dritte Wert vom Typ b ist, auch der vierte Wert ist.
Ist das korrekt? Fehle ich hier etwas? Ich weiß, dass Haskell Typ-Inferenz hat, also macht das Sinn, aber ich möchte nicht mit dem falschen mentalen Modell laufen. (Das zweite Mal versucht Haskell zu lernen).