Опис послуги
ПерекладЯ розробляю програми на Mercury — чисто декларативній мові, яка об'єднує логічне та функціональне програмування під строгою статичною системою типів, аналізом режимів та перевіркою детермінізму. Якщо ваша предметна область насичена правилами, обмеженнями та рішеннями, які мають бути несуперечливими, я перетворюю ці правила в код, честність якого гарантує сам компілятор. Mercury — це не Prolog з косметикою та не Haskell в масці логіки: висновок типів, режимів та детермінізму відловлює цілі класи помилок ще до першого запуску тестів, а саме це й потрібно системам з упором на верифікацію та правила.
На практиці я моделюю вашу предметну область предикатами та функціями з явними режимами, так що потік даних, відмова та недетермінізм оголошені та перевірені, а не припускаються. Я проектую детерміновані ядра там, де коректність критична, залишаю недетерміновий пошук там, де задача дійсно розгалужується, та використовую модульну систему Mercury, щоб великі бази правил залишались читабельними та підтримуваними роками. Мені важливі чисті інтерфейси, вичерпний розбір випадків та тотальні функції — в декларативній мові саме ці властивості дозволяють міркувати про поведінку, а не гадати.
Я можу почати проект із специфікації, врятувати заплутану існуючу кодову базу на Mercury або побудувати компактний рушій правил, аналізатор або інструмент трансформацій, який викликають інші сервіси. Я документую логіку кожного модуля, пишу осмислені тести навколо того, що компілятор довести не може, і здаю код, який майбутній супровідник дійсно зможе зрозуміти.
— Програми на Mercury за специфікацією: предикати, функції, явні режими
— Рушії правил та декларативна логіка рішень для регульованих областей
— Проектування типів, режимів та детермінізму для несуперечливого коду
— Рефакторинг та рятування заплутаних існуючих проектів на Mercury
— Аналізатори, трансформери та DSL на логіко-функціональній основі
— Інтеграція ядер Mercury з оточуючими сервісами та інструментами
На практиці я моделюю вашу предметну область предикатами та функціями з явними режимами, так що потік даних, відмова та недетермінізм оголошені та перевірені, а не припускаються. Я проектую детерміновані ядра там, де коректність критична, залишаю недетерміновий пошук там, де задача дійсно розгалужується, та використовую модульну систему Mercury, щоб великі бази правил залишались читабельними та підтримуваними роками. Мені важливі чисті інтерфейси, вичерпний розбір випадків та тотальні функції — в декларативній мові саме ці властивості дозволяють міркувати про поведінку, а не гадати.
Я можу почати проект із специфікації, врятувати заплутану існуючу кодову базу на Mercury або побудувати компактний рушій правил, аналізатор або інструмент трансформацій, який викликають інші сервіси. Я документую логіку кожного модуля, пишу осмислені тести навколо того, що компілятор довести не може, і здаю код, який майбутній супровідник дійсно зможе зрозуміти.
— Програми на Mercury за специфікацією: предикати, функції, явні режими
— Рушії правил та декларативна логіка рішень для регульованих областей
— Проектування типів, режимів та детермінізму для несуперечливого коду
— Рефакторинг та рятування заплутаних існуючих проектів на Mercury
— Аналізатори, трансформери та DSL на логіко-функціональній основі
— Інтеграція ядер Mercury з оточуючими сервісами та інструментами