Pattern Calculus rappresenta un passo avanti nelle lingue o stiamo solo tornando a LISP?


11

Barry Jay nel suo libro fa alcune affermazioni audaci - fondamentalmente dicendo che, al centro di un programma, tutto è atomico o composto. Quindi le cose possono essere facilmente iterate, filtrate, aggiornate, semplicemente navigando questa relazione di composizione.

Si tratta di una nuova frontiera dell'informatica per i linguaggi informatici o stiamo semplicemente tornando a LISP?


13
Tornare a Lisp sarebbe un passo avanti.
Shane,

4
Questa non è una domanda ben definita: dovrebbe essere fatta wiki della comunità.
Charles Stewart,

Accetto @Shane ma pensa che abbia bisogno di tipi e di una serie di librerie moderne
hawkeye,

Risposte:


6

Uno dei principali vantaggi del recente lavoro di Jay è che riduce il codice della piastra di caldaia che è necessario scrivere per attraversare le strutture di dati per eseguire operazioni come la mappa . Il calcolo del modello consente di scrivere una volta il codice di attraversamento per tutte le strutture di dati e di applicarlo alla propria struttura di dati. Ciò certamente riduce la quantità di codice richiesta, ma non consente di scrivere programmi che altrimenti non si potrebbero scrivere. Certamente ci sono molte idee interessanti nel lavoro, ma resta da dimostrare che funziona davvero.


6

Non ho familiarità con il recente lavoro di Barry Jay, ma il suo lavoro più vecchio include cose che non puoi fare in Lisp, perché i tipi forniscono informazioni aggiuntive.

Ad esempio, supponiamo di voler definire la dimensione di una struttura di dati Lisp. È 1 per un atomo e n per un elenco di n atomi, e più in generale size (x) + size (y) per (cons x y).

Ora aggiungi i tipi nel mix. La dimensione di un elenco sarebbe la sua lunghezza. Ora, qual è la dimensione di un elenco di elenchi di atomi? Se si considera questa struttura di dati come un elenco (i cui elementi risultano essere elenchi di atomi), la risposta è la lunghezza dell'elenco. Se si considera che questa struttura di dati contiene atomi che si trovano in un elenco di elenchi, la risposta è la somma delle lunghezze degli elenchi di elementi.

I tipi consentono di distinguere tra queste due viste (forme) dei dati non elaborati. È necessario un sistema di tipi che consenta di discriminare tra (Elenco) (Elenco Atom) e (Elenco Elenco) (Atom). L'implementazione più comune di questa distinzione è con le classi di tipi (come in Haskell).

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.