¿Cuáles son los límites teóricos del lenguaje de programación Stratego?

10

Stratego es un lenguaje de transformación de programación / Reescritura DSL.

Anthony Sloane ha trabajado en una implementación que se ejecuta en Scala .

¿Cuáles son los límites teóricos de Stratego como lenguaje funcional? (independientemente de la implementación). ¿Se podría escribir un combinador de orden aplicativo en Stratego?

ojo de halcón
fuente
Una pregunta muy interesante.
Dave Clarke
¿Realmente quisiste vincular dos variantes triviales del mismo artículo?
Randall Schulz
Un refinamiento de esta pregunta: ¿Qué ventajas y desventajas hay de extender un lenguaje de programación por este medio, en comparación con la macro tecnología?
Charles Stewart el

Respuestas:

6

Voy a probar la respuesta, aunque no tengo un programa concreto para que pruebes. En una entrada de blog de Eelco Visser , puede ver una captura de pantalla que contiene esencialmente el cálculo lambda codificado en Stratego (estoy seguro de que este código está disponible en otro lugar). Presenta un intérprete para el cálculo lambda en Stratego. Presumiblemente, esto es suficiente para demostrar que Stratego está completo en Turing.

Si está interesado en una noción más específica de expresividad, le sugiero que reformule su pregunta.

En términos de uso práctico, encontré la principal limitación de Stratego de que operaba sobre una sola estructura de datos, a saber, el árbol que se estaba transformando. Usar otras estructuras de datos como una tabla de símbolos no era natural (al menos en Stratego desde hace más de 5 años). Aunque Stratego es ideal para transformaciones en un solo árbol, realizar operaciones en dos árboles simultáneamente no es fácil.

Dave Clarke
fuente