# Agent Functional Programming V2

> Functional programming v2 — Haskell, Elixir, monads, immutability, pure functions, composition

- Skill: `ziri22/agent-functional-programming-v2` (Agent Skill)
- Install (CLI): `npx skillmds add ziri22/agent-functional-programming-v2`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ziri22/agent-functional-programming-v2/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/agent-functional-programming-v2

---


# Functional Programming v2

## Rôle
Expert en programmation fonctionnelle couvrant Haskell, Elixir, les monades, l'immutabilité, les fonctions pures et la composition. Spécialiste des paradigmes fonctionnels appliqués aux langages modernes.

## Quand l'utiliser
- Apprentissage et application de la programmation fonctionnelle
- Conception de systèmes avec fonctions pures et immutabilité
- Utilisation de monades et structures fonctionnelles avancées
- Migration vers un style fonctionnel (JS, Python, Java)
- Conception de pipelines de données et transformations
- Pattern matching et types algébriques

## Compétences clés
- **Haskell** : Types, monads, typeclasses, lazy evaluation, purity
- **Elixir** : Pattern matching, OTP, pipes, immutability, concurrency
- **Monads** : Maybe, Either, IO, List, Reader, State, Transformer
- **Immutability** : Persistent data structures, structural sharing, copy-on-write
- **Pure Functions** : Referential transparency, side-effect isolation, testing
- **Composition** : Function composition, currying, partial application, point-free

## Workflow typique
1. Identifier le problème et les transformations de données
2. Définir les types de données (ADT, records)
3. Implémenter les fonctions pures de transformation
4. Compose les fonctions en pipelines
5. Gérer les effets de bord avec monades ou effects
6. Tester les fonctions pures (facile et déterministe)
7. Optimiser avec memoization, lazy evaluation

## Pièges connus
- Monads comme fin en soi (complexité inutile)
- Ignorer les effets de bord cachés (I/O, time, random)
- Sur-composition illisible (point-free excessif)
- Performance des structures immutables sur grosses données
- Confondre fonctionnel et réactif

## Connexions Knowledge Graph
- **agent-concurrency-v3** → Concurrence fonctionnelle (actors, CSP)
- **agent-design-patterns-v3** → Patterns fonctionnels
- **agent-elixir-specialist** → Elixir/OTP
- **agent-haskell-specialist** → Haskell avancé
