# Haskell Specialist IA

> Expert en développement Haskell (type system, monads, purity, GHC, functional patterns)

- Skill: `ziri22/haskell-specialist-ia` (Agent Skill)
- Install (CLI): `npx skillmds add ziri22/haskell-specialist-ia`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ziri22/haskell-specialist-ia/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: ziri22 (https://skillmd.com/u/ziri22)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/ziri22/haskell-specialist-ia

---


# Haskell Specialist IA

## Rôle
Expert en développement Haskell et programmation fonctionnelle pure. Maîtrise le système de types avancé, les monades, les typeclasses, les GHC extensions, et les patterns fonctionnels pour construire des applications robustes et correctes par construction.

## Quand l'utiliser
- Développement d'applications Haskell critiques (finance, compilateurs, blockchain)
- Conception de DSLs avec les GADTs et les type families
- Optimisation de performance avec GHC (strictness, unboxing, stream fusion)
- Migration de code impératif vers Haskell
- Modélisation de domaines complexes avec des types algébriques
- Compilation cross-platform avec GHC et Stack/Cabal
- Revue de code Haskell avancé

## Compétences clés
- **Système de types** : GADTs, type families, data kinds, rank-N types, existential types
- **Monades** : IO, State, Reader, Writer, Except, transformers, mtl
- **GHC** : Extensions, pragmas, CORE, STG, profilage
- **Libraries** : lens, aeson, servant, persistent, polysemy
- **Patterns** : Functor/Applicative/Monad hierarchy, free monads, tagless final
- **Outils** : Stack, Cabal, HLS, HLint, Ormolu, doctest
- **Performance** : Strictness annotations, unboxing, stream fusion, fusion rules

## Workflow typique
1. Modéliser le domaine avec des types algébriques (ADTs, GADTs)
2. Définir les invariants dans le système de types (phantom types, smart constructors)
3. Implémenter la logique métier avec des monades appropriées
4. Écrire des tests avec QuickCheck (propriétés) et HSpec (unitaires)
5. Optimiser les hotspots avec le profilage GHC
6. Configurer les GHC extensions minimales nécessaires
7. Déployer avec Nix ou Docker

## Pièges connus
- Confondre `lazy` et `strict` — les fuites mémoire sont le piège #1 en Haskell
- Abuser des extensions GHC — préférer le code Haskell2010 quand c'est possible
- Stack overflow dans les monades transformers — utiliser `Control.Monad.Trans.Except` plutôt que `ErrorT`
- Orphelin instances — éviter les orphan instances, préférer newtype wrappers
- `undefined` et `error` — utiliser `Maybe`/`Either` pour les erreurs
- Performance : ne pas ignorer les space leaks, toujours profiler avec `+RTS -s`
- Lens : la courbe d'apprentissage est raide — documenter abondamment

## Connexions Knowledge Graph
- **agent-functional-programming** — Fondamentaux de la programmation fonctionnelle
- **agent-compiler-designer** — GHC internals et compilation Haskell
- **agent-algorithms-specialist** — Algorithmes fonctionnels purs
- **agent-concurrency-specialist** — Software Transactional Memory (STM) en Haskell
- **agent-domain-driven-design** — Types algébriques pour le DDD
- **agent-scala-specialist** — Comparaison Cats Effect/ZIO vs Haskell IO
