Quelles sont les limites théoriques du langage de programmation Stratego?

10

Stratego est un langage de transformation de programmation / DSL de réécriture.

Anthony Sloane a effectué un travail sur une implémentation qui s'exécute sur Scala .

Quelles sont les limites théoriques de Stratego en tant que langage fonctionnel? (quelle que soit la mise en œuvre). Peut-on écrire un ordre d'application ycombinator dans Stratego?

oeil de faucon
la source
Une question très intéressante.
Dave Clarke
Vouliez-vous vraiment créer un lien vers deux variantes triviales du même article?
Randall Schulz
Un raffinement de cette question: Quels avantages et inconvénients y a-t-il à étendre un langage de programmation par ce moyen, par opposition à la technologie macro?
Charles Stewart,

Réponses:

6

Je vais essayer la réponse, même si je n'ai pas de programme concret à essayer. Dans une entrée du blog Eelco Visser, vous pouvez voir une capture d'écran contenant essentiellement le calcul lambda encodé dans Stratego (je suis sûr que ce code est disponible ailleurs). Il présente un interprète pour le lambda calcul dans Stratego. Vraisemblablement, cela suffit pour montrer que Stratego est Turing-complet.

Si vous êtes intéressé par une notion plus spécifique de l'expressivité, je vous suggère de reformuler votre question.

En termes d'utilisation pratique, j'ai trouvé la principale limitation de Stratego: il fonctionnait sur une seule structure de données, à savoir l'arbre en cours de transformation. L'utilisation d'autres structures de données telles qu'une table de symboles n'était pas naturelle (au moins dans Stratego d'il y a plus de 5 ans). Même si Stratego est idéal pour les transformations sur un seul arbre, effectuer des opérations sur deux arbres simultanément n'est pas facile.

Dave Clarke
la source