Каковы теоретические ограничения языка программирования Stratego?

10

Stratego - это язык трансформации программирования / переписывание DSL.

Энтони Слоун проделал определенную работу по реализации, которая работает на Scala .

Каковы теоретические пределы Stratego как функционального языка? (независимо от реализации). Можно ли написать аппликативный порядок ycombinator в Stratego?

Hawkeye
источник
Очень интересный вопрос
Дэйв Кларк
Вы действительно имели в виду ссылку на два тривиальных варианта одной и той же статьи?
Рэндалл Шульц
Уточнение этого вопроса: какие преимущества и недостатки есть в расширении языка программирования таким способом, в отличие от макротехнологии?
Чарльз Стюарт

Ответы:

6

Я попробую ответить, хотя у меня нет конкретной программы для вас. В одной записи блога Eelco Visser вы можете увидеть снимок экрана, содержащий, по сути, лямбда-исчисление, закодированное в Stratego (я уверен, что этот код доступен в другом месте). Он представляет переводчика для лямбда-исчисления в Stratego. Предположительно, этого достаточно, чтобы показать, что Stratego завершен по Тьюрингу.

Если вас интересует более конкретное понятие выразительности, тогда я предлагаю перефразировать ваш вопрос.

С точки зрения практического использования, я обнаружил главное ограничение Stratego в том, что он работает только с одной структурой данных, а именно с трансформируемым деревом. Использование других структур данных, таких как таблица символов, было неестественным (по крайней мере, в Stratego более 5 лет назад). Несмотря на то, что Stratego идеально подходит для преобразований в одном дереве, одновременно выполнять операции над двумя деревьями непросто.

Дэйв Кларк
источник