Занимаюсь разработкой на Mercury — декларативном языке, где логическое и функциональное программирование живут вместе под строгой статической типизацией, анализом режимов и проверкой детерминизма. Когда предметная область состоит из правил, ограничений и решений, которые должны сходиться без противоречий, я перекладываю эти правила в код, за корректностью которого следит сам компилятор. Важно понимать: Mercury — это не подкрашенный Prolog и не Haskell, притворяющийся логическим языком. Автоматический вывод типов, режимов и детерминизма снимает целые группы ошибок ещё до тестов, и именно это ценят задачи с верификацией и сложной логикой правил.
В работе я описываю вашу область предикатами и функциями с явно заданными режимами: направление данных, возможный отказ и недетерминизм становятся объявленными и проверяемыми, а не молчаливым допущением. Детерминированные ядра ставлю туда, где ошибка недопустима, недетерминированный поиск оставляю там, где задача честно ветвится, а модульная система языка помогает держать крупные наборы правил понятными и живыми на годы вперёд. Стремлюсь к аккуратным интерфейсам, полному перебору случаев и тотальным функциям — в декларативном языке именно они дают возможность рассуждать о поведении программы, а не надеяться на удачу.
Могу запустить проект от спецификации, привести в порядок разросшийся и запутанный код на Mercury или собрать компактный движок правил, анализатор либо преобразователь, к которому обращаются другие сервисы. Каждый модуль сопровождаю пояснением замысла, покрываю тестами то, что компилятор доказать не в силах, и отдаю код, в котором следующий сопровождающий сумеет разобраться.
— Разработка на Mercury от спецификации: предикаты, функции, явные режимы
— Движки правил и декларативная логика решений для областей с требованиями
— Проектирование типов, режимов и детерминизма ради непротиворечивости
— Приведение в порядок и восстановление запутанных проектов на Mercury
— Анализаторы, преобразователи и DSL на логико-функциональном фундаменте
— Стыковка ядер Mercury с внешними сервисами и инструментами
В работе я описываю вашу область предикатами и функциями с явно заданными режимами: направление данных, возможный отказ и недетерминизм становятся объявленными и проверяемыми, а не молчаливым допущением. Детерминированные ядра ставлю туда, где ошибка недопустима, недетерминированный поиск оставляю там, где задача честно ветвится, а модульная система языка помогает держать крупные наборы правил понятными и живыми на годы вперёд. Стремлюсь к аккуратным интерфейсам, полному перебору случаев и тотальным функциям — в декларативном языке именно они дают возможность рассуждать о поведении программы, а не надеяться на удачу.
Могу запустить проект от спецификации, привести в порядок разросшийся и запутанный код на Mercury или собрать компактный движок правил, анализатор либо преобразователь, к которому обращаются другие сервисы. Каждый модуль сопровождаю пояснением замысла, покрываю тестами то, что компилятор доказать не в силах, и отдаю код, в котором следующий сопровождающий сумеет разобраться.
— Разработка на Mercury от спецификации: предикаты, функции, явные режимы
— Движки правил и декларативная логика решений для областей с требованиями
— Проектирование типов, режимов и детерминизма ради непротиворечивости
— Приведение в порядок и восстановление запутанных проектов на Mercury
— Анализаторы, преобразователи и DSL на логико-функциональном фундаменте
— Стыковка ядер Mercury с внешними сервисами и инструментами