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 possa anche parametrizzare un tipo su valori - se supporta tipi dipendenti. Con i tipi dipendenti, puoi avere un tipo parametrizzato su numeri interi, ad esempio vettori di dimensione n, matrici di dimensioni n × m, ecc.

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

    
posta Mozibur Ullah 09.01.2013 - 18:26
fonte

3 risposte

18

Haskell non ha abbastanza tipi dipendenti completi, sebbene possa avvicinarsi molto con estensioni come DataKinds e TypeFamilies . Il problema al momento, per quanto ne so, è che Haskell a livello di valore ha un fondo esplicito, ma Haskell a livello di caratteri no.

Questo non ti impedisce di parametrizzare i tipi su altri tipi, incluso il DataKind -lifting dei valori . A partire da GHC 7.6 e con DataKinds abilitato, è possibile utilizzare i tipi e le stringhe a livello di carattere, nonché le tuple a livello di testo, gli elenchi a livello di testo ei sollevamenti a livello di testo di qualsiasi (non di livello superiore, tipi di dati algebrici non generalizzati, non vincolati), che è simile alla (ma molto più generale) capacità del C ++ di usare numeri interi nei template.

    
risposta data 09.01.2013 - 22:41
fonte
8

Espandere un po 'ciò che la Fiamma di Ptharien spiegava bene sullo stato attuale - e GHC Haskell sembra muoversi ulteriormente nella direzione dei tipi dipendenti (preservando la separazione di fase) con ciascuna versione.

Così ad es. per l'ICFP 2013 questo settembre, dovrebbe essere presentato un documento sulla prossima fase di questo processo, "Verso Haskell tipicamente dipendente: System FC con l'uguaglianza gentile ", circa il collasso dei livelli di tipo e tipo. Come era annunciato per essere il piano circa 3 anni fa .

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

    
risposta data 16.07.2013 - 16:45
fonte
2

Haskell ha sempre cercato di simularlo, ma il risultato finale è un sistema di tipo molto più grande e apparentemente ripetitivo. Ma questo potrebbe presto cambiare! Vedi:

risposta data 14.12.2014 - 23:28
fonte

Leggi altre domande sui tag