Hat Haskell abhängige Typen?

20

Ich weiß, dass Haskell bereits die Möglichkeit hat, einen Typ über einen anderen Typ zu parametrisieren (ähnlich wie bei der Template-Programmierung in C ++), aber ich frage mich, ob Haskell auch einen Typ über Werte parametrisieren kann - ob er abhängige Typen unterstützt. Bei abhängigen Typen können Sie einen Typ verwenden, der über ganze Zahlen parametrisiert ist, z. B. Vektoren der Größe n, Matrizen der Größe n × m usw.

Wenn nein, warum nicht? Und gibt es eine Möglichkeit, dass es in Zukunft unterstützt wird?

Mozibur Ullah
quelle

Antworten:

18

Haskell hat nicht ganz alle abhängigen Typen, obwohl es mit Erweiterungen wie DataKindsund sehr nahe kommen kann TypeFamilies. Das Problem im Moment ist, soweit ich weiß, dass Haskell auf Wertebene explizite Bottoms hat, Haskell auf Typebene jedoch nicht.

Dies hindert Sie nicht daran, Typen über andere Typen zu parametrisieren, einschließlich des DataKindHebens von Werten . Ab GHC 7.6 und mit DataKindsaktivierter Option können Sie Naturals und Strings auf Typebene sowie Tupel auf Typebene, Listen auf Typebene und die Aufhebungen auf Typebene von allen (nicht höherwertigen, nicht verallgemeinerten) verwenden , nicht beschränkte) algebraische Datentypen, die der Fähigkeit von C ++, Ganzzahlen in Vorlagen zu verwenden, ähneln (aber viel allgemeiner sind als diese).

Pthariens Flamme
quelle
1
Fügen die bevorstehenden Änderungen in GHC 8 vollständig abhängige Typen hinzu?
Janus Troelsen
@JanusTroelsen Nicht ganz; sie ermöglichen abhängige Arten .
Pthariens Flamme
8

Um ein bisschen zu erweitern, was Pthariens Flamme gut über den aktuellen Status erklärt hat - und GHC Haskell scheint sich mit jeder Version weiter in Richtung abhängiger Typen zu bewegen (unter Beibehaltung der Phasentrennung).

So sollte zum Beispiel auf der ICFP 2013 im September dieses Jahres ein Artikel über die nächste Phase dieses Prozesses mit dem Titel "Hin zu abhängig typisiertem Haskell: System FC mit Gleichberechtigung" über das Zusammenbrechen der Arten- und Typenstufen vorgelegt werden. Wie angekündigt war der Plan vor ca. 3 Jahren .

Und es wird sogar der nächste Schritt erwähnt: "Wir sind uns auch bewusst, dass die bevorstehende Dissertation von Adam Gundry Π-Typen in einer Version von System FC enthalten wird, und wir werden diese Funktion auch in der Ausgangssprache verfügbar machen wollen. (Persönliche Mitteilung)"

user96830
quelle