Стоит задача создания специализированного языка для задания программы действий некоторому устройству по схеме: фиксируемая ситуация -> действие на нее. При этом ставятся ограничения, чтобы язык был достаточно простым для обучения и экспрессивным (программы на нем просты и читабельны). Выбрал декларативный подход (без использования понятия именованных изменяемых ячеек памяти) с реализацией просто по схеме: задается логическое условие на ситуацию и после него прописывается действие. Но столкнулся со следующей трудностью. Мне нужно, чтобы в этом языке можно было легко задавать следующее условие: "для определения ситуации вычисли данное выражение E в контексте С1, затем в контексте C2 и сравни результат". Вопрос, как в декларативном программировании проще и естественнее ввести понятие контекста (будет ли это тогда вообще декларативным программированием?). Какие подводные камни здесь могут быть (по аналогии с подводными камнями в виде побочных эффектов в нечистых функциональных языках программирования). Может быть, есть какой-то известный язык, где подобное реализовано?