Stratego - это язык трансформации программирования / переписывание DSL.
Энтони Слоун проделал определенную работу по реализации, которая работает на Scala .
Каковы теоретические пределы Stratego как функционального языка? (независимо от реализации). Можно ли написать аппликативный порядок ycombinator в Stratego?
functional-programming
Hawkeye
источник
источник
Ответы:
Я попробую ответить, хотя у меня нет конкретной программы для вас. В одной записи блога Eelco Visser вы можете увидеть снимок экрана, содержащий, по сути, лямбда-исчисление, закодированное в Stratego (я уверен, что этот код доступен в другом месте). Он представляет переводчика для лямбда-исчисления в Stratego. Предположительно, этого достаточно, чтобы показать, что Stratego завершен по Тьюрингу.
Если вас интересует более конкретное понятие выразительности, тогда я предлагаю перефразировать ваш вопрос.
С точки зрения практического использования, я обнаружил главное ограничение Stratego в том, что он работает только с одной структурой данных, а именно с трансформируемым деревом. Использование других структур данных, таких как таблица символов, было неестественным (по крайней мере, в Stratego более 5 лет назад). Несмотря на то, что Stratego идеально подходит для преобразований в одном дереве, одновременно выполнять операции над двумя деревьями непросто.
источник