Quali sono i limiti teorici del linguaggio di programmazione Stratego?


10

Stratego è un linguaggio di trasformazione della programmazione / Riscrittura DSL.

Anthony Sloane ha svolto alcuni lavori eseguendo un'implementazione su Scala .

Quali sono i limiti teorici di Stratego come linguaggio funzionale? (indipendentemente dall'implementazione). Si potrebbe scrivere un ycombinator di ordine applicativo in Stratego?


Una domanda molto interessante
Dave Clarke,

Intendevi davvero collegarti a due banali varianti dello stesso documento?
Randall Schulz,

Un affinamento di questa domanda: quali sono i vantaggi e gli svantaggi dell'estensione di un linguaggio di programmazione in questo modo, a differenza della tecnologia macro?
Charles Stewart,

Risposte:


6

Ci proverò alla risposta, anche se non ho un programma concreto da provare. In un post sul blog di Eelco Visser puoi vedere una schermata contenente essenzialmente il calcolo lambda codificato in Stratego (sono sicuro che questo codice è disponibile altrove). Presenta un interprete per il calcolo lambda in Stratego. Presumibilmente, questo è sufficiente per dimostrare che Stratego è Turing completo.

Se sei interessato a una nozione più specifica di espressività, ti suggerisco di riformulare la tua domanda.

In termini di utilizzo pratico, ho trovato il principale limite di Stratego che operava su una sola struttura di dati, vale a dire, l'albero che veniva trasformato. L'uso di altre strutture di dati come una tabella di simboli era innaturale (almeno in Stratego di oltre 5 anni fa). Sebbene Stratego sia ideale per le trasformazioni su un singolo albero, eseguire operazioni su due alberi contemporaneamente non è facile.

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.