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?
functional-programming
oeil de faucon
la source
la source
Réponses:
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.
la source