Sono interessato a ottenere una comprensione davvero solida della digitazione dipendente. Ho letto la maggior parte di TaPL e ho letto (se non completamente assorbito) "Tipi dipendenti" in ATTaPL . Ho anche letto e sfogliato un sacco di articoli sulla digitazione dipendente.
Molte discussioni sulla teoria dei tipi sembrano concentrarsi sull'aggiunta di funzionalità incrementali ai sistemi di tipi precedenti, non "qual è la prossima generalizzazione di grandi dimensioni rispetto al sistema di tipi X?" I tipi dipendenti sembrano essere la prossima generalizzazione di grandi dimensioni dal Sistema F, ma devo ancora trovare il linguaggio intuitivo, canonico tipicamente dipendente. I molti riferimenti a Calculus of (inductive) Constructions mi fanno pensare che CoC sia quel linguaggio, ma le spiegazioni del linguaggio che ho visto non mi sembrano molto chiare o intuitive.
Mi aspetto / suppongo che un tale linguaggio avrebbe caratteristiche come: (e per favore fatemi sapere se qualcosa in particolare salta fuori come confuso o non realistico)
- Astrazione generalizzata (può avere funzioni da qualsiasi dominio nella gerarchia dei tipi ad altri, kind -> term, term-> type '' 'ecc.)
- Ha una gerarchia infinita di battitura (termini: tipi: tipi ': tipi' ': ...)
- Un numero minimo di elementi di base. Immagino che il linguaggio asserisca solo un singolo elemento per ogni livello. Ad esempio, potrebbe affermare che ((): Unità: Tipo: Tipo ': ...). Altri elementi sono costruiti da questi elementi.
- Somma e tipi di prodotto sono derivabili.
Sto anche cercando una spiegazione di quella lingua che idealmente dovrebbe discutere:
- La relazione tra astrazione e quantificazione in quella lingua. Se non sono unificati, spiega perché non sono unificati.
- La gerarchia di tipi infiniti in modo esplicito
Sto ponendo questa domanda perché voglio imparare la teoria dei tipi dipendenti, ma anche perché voglio mettere insieme una guida che, assumendo un po 'di background CS, insegna l'uso e la comprensione degli assistenti di verifica e dei linguaggi tipicamente dipendenti.