haskell ha tipi dipendenti?


20

So che Haskell ha già la possibilità di parametrizzare un tipo su un altro tipo (simile alla programmazione di template in C ++), ma mi chiedo se Haskell può anche parametrizzare un tipo su valori - se supporta tipi dipendenti. Con i tipi dipendenti, puoi avere un tipo che è parametrizzato su numeri interi, ad esempio vettori di dimensione n, matrici di dimensione n × m, ecc.

In caso contrario, perché no? E c'è qualche possibilità che sarà supportato in futuro?

Risposte:


18

Haskell non ha tipi completamente dipendenti, anche se può avvicinarsi molto con estensioni come DataKindse TypeFamilies. Il problema al momento, per quanto ne so, è che Haskell a livello di valore ha fondi espliciti ma Haskell a livello di tipo no.

Questo non ti impedisce di parametrizzare i tipi rispetto ad altri tipi, incluso il DataKindsollevamento dei valori . A partire da GHC 7.6, e con DataKindsabilitato, è possibile utilizzare stringhe e valori naturali di livello tipo, nonché tuple a livello di tipo, elenchi a livello di tipo e sollevamenti a livello di tipo di qualsiasi (non di tipo superiore, non generalizzato , tipi di dati algebrici non vincolati, che è simile (ma molto più generale della) capacità di C ++ di usare numeri interi nei template.


1
Le modifiche imminenti in GHC 8 aggiungono tipi completamente dipendenti?
Janus Troelsen,

@JanusTroelsen Non del tutto; abilitano tipi dipendenti .
Ptharien's Flame,

8

Espandere un po 'quello che Ptharien's Flame ha spiegato bene sullo stato attuale - e GHC Haskell sembra muoversi ulteriormente nella direzione dei tipi dipendenti (preservando la separazione di fase) con ogni versione.

Quindi, ad esempio all'ICFP 2013 di settembre, dovrebbe essere presentato un documento sulla prossima fase di questo processo, "Verso una tipizzazione dipendente di Haskell: System FC con uguaglianza di genere" , sul collasso dei livelli di tipo e tipo. Come è stato annunciato per essere il piano circa 3 anni fa .

E menziona anche il prossimo passo: "Siamo anche consapevoli che la prossima tesi di Adam Gundry includerà i tipi Π in una versione di System FC e vorremmo rendere disponibile questa funzione anche nella lingua di origine. (Comunicazione personale)"


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.