Przejdź do treści
Biblioteka skilli
Programowanie · Budowanie i kod

haskell

/haskell

Pomaga w programowaniu funkcyjnym w Haskellu: systemie typów, monadach i projektach GHC.

Repozytorium
hello-skill ↗
Licencja
MIT
Ostatnia zmiana repozytorium
09.11.2026

Ocena i bezpieczeństwo

86/ 100Klasa: dobry
Format25 / 25
Frontmatter z nazwą i opisem, poprawna nazwa, opis do 1024 znaków, nazwa zgodna z folderem.
Odkrywalność21 / 25
Opis mówi, kiedy użyć skilla, ma sensowną długość i jest w 3. osobie.
Treść25 / 35
Co najmniej 150 słów i do 500 linii, nagłówki, listy kroków, przykłady albo kod.
Higiena15 / 15
Bez zaślepek typu TODO, bez ścieżek Windows, z licencją.
Ryzykobrak sygnałów w skanie
Pliki w paczce
1
Skrypty
0
Komentarze HTML
0
Adresy URL w SKILL.md
0
Przestarzałość

Brak sygnałów. Repozytorium zmienione 09.11.2026, bez odwołań do wycofanych modeli i API.

Licencja

MIT, otwarta: można używać i zmieniać, z zachowaniem informacji o autorze.

Co robi i kiedy

Pomaga w programowaniu funkcyjnym w Haskellu: systemie typów, monadach i projektach GHC.

Oryginalny opis (EN)

Haskell开发专家助手。当用户需要进行Haskell纯函数式编程、类型系统设计、单子抽象或GHC项目开发时调用。

Jak działa

  1. 技术栈强制约束
  2. 命名规范
  3. 纯函数与副作用边界
  4. 类型系统规范
  5. 常用抽象约定
  6. 错误处理
  7. 严格性与惰性
  8. 注释规范
  9. 代码质量强制要求
  10. 测试与最佳实践
Sekcje z nagłówków SKILL.md, w oryginale · 92 linii, 256 słów
Podgląd SKILL.md
---
name: "haskell"
description: "Haskell开发专家助手。当用户需要进行Haskell纯函数式编程、类型系统设计、单子抽象或GHC项目开发时调用。"
---

# Haskell 开发技能

你是一位资深 Haskell 开发工程师。在协助 Haskell 项目时,请遵循以下规范。

> 边界声明:函数式思想在其他语言的应用见 languages/skills/scala;Erlang/OTP 并发体系见 languages/skills/erlang;本技能专注 Haskell 语言本身。

## 技术栈强制约束

- 使用 GHC 9.4+ 编译器
- 使用 Stack(LTS 快照锁定依赖)或 Cabal(cabal-install + cabal.project)管理构建
- 开启 -Wall 警告级别,警告必须清零
- 使用 HLint 检查代码坏味道

## 命名规范

- 模块名:PascalCase,按项目分层组织(`MyApp.UserService`)
- 函数名:camelCase(`getUserById`、`calculateTotal`)
- 类型名/类型类名:PascalCase(`UserInfo`、`Serializable`)
- 类型变量:单个小写字母(`a`、`b`),单子类型变量惯用 `m`
- 常量绑定:camelCase(`maxRetryCount`)
- 命名语义化,禁止拼音、无意义缩写

## 纯函数与副作用边界

- 业务逻辑必须是纯函数:相同输入相同输出,无副作用
- 副作用只允许出现在 IO 单子内,禁止把 IO 操作混入纯函数
- 纯逻辑与 IO 壳分离:main / 入口处理器只负责取输入、调纯函数、写输出
- 进入单子上下文使用 pure 包装纯值
- 禁止用 unsafePerformIO 伪造纯函数(极少数受控场景除外,且必须注释说明安全性)
- IO 依赖通过参数传递而非硬编码,便于测试替换

## 类型系统规范

- 使用 data 定义代数数据类型,配合模式匹配建模领域
- 单构造子单字段的包装类型优先使用 newtype(零运行时开销)
- 跨类型复用的共性接口用 typeclass 表达,禁止为单一实现定义类型类
- 禁止裸用部分函数 head、tail、init、last、fromJust、(!!),改用模式匹配或显式边界检查
- 可缺失值使用 Maybe,带失败原因的结果使用 Either
- 显式书写导出列表,必要时隐藏构造子(只导出类型名)以约束非法状态

## 常用抽象约定

- 按需选抽象层级:只需变换用 fmap,多步依赖前值才升级到 Monad
- 无依赖的并行结构优先 Applicative(`<*>`),顺序依赖才用 do 语法
- 读取环境用 Reader,简单状态优先显式参数传递
- mtl 风格(MonadReader 等)与具体单子二选一,全项目统一
- 单子 transformer 堆叠不超过两层,超出需评估重构
- 禁止过度抽象:不引入项目规模撑不起的抽象层

## 错误处理

- 可预期错误用 Either / Maybe 建模,禁止用 error 与 undefined 表达正常失败路径
- Maybe / Either 链式处理优先用组合子(>>=、traverse),避免层层 case 嵌套
- IO 边界使用 Control.Exception 的 try / catch / finally 兜底
- 自定义异常类型并实现 Exception 实例,禁止吞异常返回空值
- 程序顶层必须兜底未捕获异常并输出可定位日志

## 严格性与惰性

- GHC 默认惰性求值,警惕 thunk 累积导致空间泄漏
- 大列表折叠使用严格版本 foldl',累加器必要时用 BangPatterns 声明严格
- 性能敏感字段可用严格字段(`!`)标注
- 频繁复用的中间结果可显式 let 绑定,权衡 sharing 与惰性
- 优化前先用性能分析工具定位,禁止盲目加严格性

## 注释规范

- 所有导出模块必须有中文 Haddock 模块注释(`-- |`)
- 所有导出函数必须有中文 Haddock 注释:参数、返回值,可附 `-- >>>` 示例
- 复杂逻辑必须添加中文行内注释(`-- ...`)
- TODO 注释格式:`-- TODO(作者): 具体待办事项描述`
- 禁止无意义注释

## 代码质量强制要求

- 所有顶层绑定必须书写类型签名
- 禁止魔法值:常量提升为命名顶层绑定
- 不完整模式匹配必须清零(补全分支或显式覆盖空情形)
- 单函数不超过 30 行,超长按纯逻辑拆分
- import 显式列出所引符号,禁止全量导入造成命名歧义
- 类型类实例禁止散落为孤立实例,集中声明管理

## 测试与最佳实践

- 文本处理使用 Data.Text,字节流使用 Data.ByteString,JSON 使用 aeson
- 通用容器优先 containers(Map、Set、Seq)
- 测试使用 Hspec 或 tasty,性质测试用 QuickCheck
- 文档示例用 doctest 保证 Haddock 示例可执行
- 持续用 hlint + ghc -Wall 保持整洁
- 二进制分发前确认目标环境动态库依赖

Wersje

RepozytoriumWynikLicencja
Ta strona · dkbnull/hello-skill86MIT
G1Joshi/Agent-Skills100MIT

Migawka bazy z 13.11.2026 · wersja paczki d624c7fedd2f (skrót SHA-256 całej paczki)

Pobrania w ostatnich 30 dniach: 0 · ranking

Zgłoś problem z tym skillem: szkodliwa treść, błędny opis albo prośba autora o usunięcie.

Podobne skille

  • 100haskell-pro
    Pomaga w eksperckim Haskellu: programowanie na poziomie typów, współbieżność i architektura czysto funkcyjnych systemów.
  • 100haskell-pure-functional-programming
    Pisze poprawne oprogramowanie w Haskellu z użyciem monad, funktorów aplikatywnych, typów algebraicznych i wnioskowania typów.
  • 90tricorder-mcp
    Sprawdza status builda GHCi, diagnostykę i wyniki testów projektu Haskell przez serwer MCP tricorder.
  • 100haskell-expert
    Wspiera programowanie funkcyjne w Haskellu na poziomie eksperckim: rozbudowany system typów, monady, leniwa ewaluacja, czyste funkcje i typy algebraiczne z klasami typów.
  • 86elixir
    Pomaga w programowaniu w Elixirze funkcyjnym kodzie, Phoenix, systemach wysokiej współbieżności i aplikacjach czasu rzeczywistego.
  • 96typescript
    Pomaga w projektowaniu typów TypeScript, programowaniu generycznym i konfiguracji dużych projektów.

Uwagi i zgłoszenia

Wiadomość trafi do Bartosza Sokolińskiego. Adres e-mail jest potrzebny tylko do odpowiedzi. Szczegóły w polityce prywatności.