Описание услуги
Я функционально-логический программист и профессионально работаю на языке Curry, поэтому предлагаю проектировать и реализовывать декларативные решения там, где обычный императивный код превращается в путаницу. Язык Curry объединяет чистые функции в духе Haskell с логическим программированием: я описываю задачу как набор отношений, а сужение и недетерминированное вычисление сами обходят пространство поиска. Это мой ежедневный инструмент. За последние годы я написал решатели с ограничениями, движки для головоломок и расписаний, синтаксические анализаторы и небольшие предметные языки, всегда предпочитая читаемые уравнения ручной оптимизации циклов. Обычный ход работы такой: мы согласуем спецификацию, я моделирую предметную область алгебраическими типами и образцами функций, добавляю свободные переменные и недетерминированный выбор там, где нужен перебор, и инкапсулирую результат, чтобы вызывающий код получал детерминированные и тестируемые ответы. Основные системы — PAKCS и KiCS2; я умею находить, где перебор взрывается, и заранее добавляю ограничения, чтобы его подрезать. В поставку входят прокомментированный исходный код, короткая заметка о декларативной модели, набор тестов и созвон-разбор, чтобы ваша команда могла сопровождать код. Помогаю и академическим проектам: эталонные реализации к статьям, учебные примеры, воспроизводимые артефакты для оценки. Если у вас комбинаторная или основанная на правилах задача и нужно ясное решение, а не чёрный ящик, язык Curry подходит отлично, и я с радостью соберу его вместе с вами.