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