Proprietà come l'uso della memoria di una funzione possono essere espresse in un linguaggio tipicamente dipendente?


11

Supponiamo che uno voglia ragionare sulle proprietà del codice al di là di cose come la totalità e la purezza funzionale - ci si preoccupa anche del consumo di memoria o della complessità algoritmica di una funzione. Questo può essere fatto attraverso sistemi di tipizzazione dipendenti ed effetti?


2
In questo video Brian McKenna fornisce un esempio di codifica della complessità temporale in tipi.
Anton Trunov,

Risposte:


8

Sì, può. Sebbene concettualmente non sia così difficile, non è stato studiato tanto. Un aspetto del campo è la semantica dei costi come la ricerca condotta da Guy Blelloch .

Nella vena del video, Anton ha menzionato il lavoro di Daniellson sull'analisi della complessità temporale semiforme leggera per strutture di dati puramente funzionali . Questo effettivamente utilizza una monade per sostenere un costo per operazione. Una monade simile, a livello semantico, viene utilizzata nella semantica dei costi denotazionali per linguaggi funzionali con tipi induttivi . Ecco un 2016 di carta di fare qualcosa di simile in Coq, A Coq Biblioteca per la verifica interna di Running-Times .

Anche le persone NuPRL sono state a lungo interessate a fare cose del genere. Nell'esprimere la complessità computazionale nella teoria costruttiva costruttiva , che sostanzialmente equivale a calcolare su una semantica operativa strutturata. Dove diventa un po 'più interessante è che puoi riflettere la semantica della lingua nella lingua. L'esempio nella sezione finale, sezione 12, di Naive Computational Type Theory illustra e discute questo genere di cose.

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.