Stratego é uma linguagem de transformação de programação / reescrita de DSL.
Anthony Sloane fez algum trabalho executando uma implementação que é executada no Scala .
Quais são os limites teóricos do Stratego como linguagem funcional? (independentemente da implementação). Alguém poderia escrever uma ordem de aplicação ycombinator no Stratego?
functional-programming
Hawkeye
fonte
fonte
Respostas:
Vou tentar a resposta, embora não tenha um programa concreto para você tentar. Em uma entrada do blog da Eelco Visser, você pode ver uma captura de tela contendo essencialmente o cálculo lambda codificado no Stratego (tenho certeza de que esse código está disponível em outro lugar). Ele apresenta um intérprete para o cálculo lambda no Stratego. Presumivelmente, isso é suficiente para mostrar que o Stratego está completo em Turing.
Se você estiver interessado em uma noção mais específica de expressividade, sugiro que você reformule sua pergunta.
Em termos de uso prático, eu encontrei a principal limitação do Stratego de que ele operava apenas uma estrutura de dados, a saber, a árvore sendo transformada. O uso de outras estruturas de dados, como uma tabela de símbolos, não era natural (pelo menos no Stratego há mais de 5 anos). Embora o Stratego seja ideal para transformações em uma única árvore, executar operações em duas árvores simultaneamente não é fácil.
fonte