haskell-pro
Освойте продвинутое программирование на Haskell с экспертной поддержкой
Испытываете трудности со сложными системами типов и чистым функциональным дизайном в Haskell? Этот навык предоставляет экспертные рекомендации по программированию на уровне типов, паттернам конкурентности и созданию высоконадёжного программного обеспечения с сильными статическими гарантиями.
Скачать ZIP навыка
Загрузить в Claude
Перейдите в Settings → Capabilities → Skills → Upload skill
Включите и начните использовать
Протестировать
Использование «haskell-pro». Разработайте типобезопасное API для обработки денежных переводов, предотвращающее недопустимые состояния на этапе компиляции.
Ожидаемый результат:
Используйте newtypes для обёртывания Amount и Currency с фантомными типами для отслеживания состояний перевода (Pending, Completed, Failed). Реализуйте конечный автомат с использованием GADT, который разрешает только допустимые переходы. Закодируйте инварианты аккаунта в типах для предотвращения овердрафта. Предоставьте сигнатуры типов, которые делают недопустимые переводы непредставимыми.
Использование «haskell-pro». Как обрабатывать конкурентный доступ к общему кэшу в Haskell?
Ожидаемый результат:
Используйте STM (Software Transactional Memory) с TVar для атомарных обновлений кэша. Оберните операции кэша в блоки retry для автоматического разрешения конфликтов. Комбинируйте с async для конкурентных операций чтения/записи. Реализуйте безопасную очистку исключений с использованием bracket или finally. Пример паттерна: atomically $ do cached <- readTVar cacheVar; case cached of Just val -> return val; Nothing -> do newValue <- computeValue; writeTVar cacheVar (Just newValue); return newValue
Использование «haskell-pro». Просмотрите мой код Haskell на предмет улучшений функционального дизайна.
Ожидаемый результат:
Выделите чистую бизнес-логику в отдельные функции с явными сигнатурами. Изолируйте IO базы данных и сети с использованием стеков трансформеров (ReaderT для конфигурации, ExceptT для ошибок). Замените частичные функции на полные альтернативы с использованием Maybe или Either. Введите newtypes для различения UserID и Username на уровне типов. Разделите большие модули на сфокусированные модули с единой ответственностью.
Аудит безопасности
БезопасноStatic analysis detected 7 potential issues (1 external_commands, 6 weak cryptographic patterns). All findings are false positives: the 'external_commands' detection was Markdown backticks for file paths, not shell execution. The 'weak cryptographic' detections appear to be scanner errors as no cryptographic code exists in the skill. The skill contains only documentation and instructions for Haskell programming assistance with no executable code, network operations, or security risks.
Проблемы низкого риска (1)
Оценка качества
Что вы можете построить
Программирование на уровне типов
Проектирование сложных абстракций на уровне типов, которые кодируют бизнес-логику в системе типов, отлавливая ошибки на этапе компиляции
Проектирование конкурентных систем
Создание конкурентных и параллельных приложений с использованием STM, async и лёгких потоков с надлежащей безопасностью исключений
Аудит архитектуры кодовой базы
Оценка существующих кодовых баз Haskell на предмет паттернов функционального дизайна, типобезопасности и архитектурных улучшений
Попробуйте эти промпты
Разработайте типобезопасную предметную модель для системы [domain]. Используйте newtypes, фантомные типы или GADT для кодирования инвариантов на уровне типов и предотвращения недопустимых состояний.
Просмотрите этот код на Haskell и выполните рефакторинг для разделения чистой логики и кода с эффектами. Определите, где можно изолировать IO, и предложите архитектуру сигнатур функций.
Разработайте конкурентную [system] с использованием STM и async в Haskell. Покажите, как безопасно обрабатывать общее состояние и реализовать безопасную очистку ресурсов с исключениями.
Проанализируйте этот код Haskell на предмет узких мест производительности. Определите возможности для анализа строгости, оптимизаций слияния (fusion) или выбора лучших структур данных.
Лучшие практики
- Начните с уточнения вашей конкретной задачи по Haskell — будь то дизайн на уровне типов, конкурентность, архитектура или настройка производительности
- Предоставляйте соответствующие фрагменты кода, сообщения об ошибках или предупреждения компилятора для более целенаправленных рекомендаций
- Указывайте вашу версию GHC и ключевые зависимости при запросе рекомендаций по архитектуре или совместимости
Избегать
- Запрос помощи по программированию не на Haskell — используйте вместо этого навык общего кодирования
- Запрос на исполнение произвольных системных команд или файловых операций вне контекста вашего проекта
- Ожидание полных реализаций приложений без предоставления требований проекта или ограничений