Quais são os limites teóricos da linguagem de programação do Stratego?

10

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?

Hawkeye
fonte
Uma pergunta muito interessante.
Dave Clarke
Você realmente quis vincular a duas variantes triviais do mesmo artigo?
Randall Schulz
Um refinamento dessa pergunta: que vantagens e desvantagens existem de estender uma linguagem de programação por esse meio, em oposição à macroeconomia?
Charles Stewart

Respostas:

6

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.

Dave Clarke
fonte