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?
functional-programming
ojo de halcón
fuente
fuente
Respuestas:
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.
fuente