Référence de l'API¶
Cette section documente chaque module, fonction et type constituant fptk. Chaque page détaille les concepts de programmation fonctionnelle sous-jacents, le fonctionnement technique de l'implémentation et fournit des exemples d'utilisation concrets.
Aperçu des modules¶
Fonctions de base¶
fptk.core.func — Combinateurs essentiels pour l'assemblage et la transformation de fonctions.
| Fonction | Objectif |
|---|---|
pipe |
Orchestre le passage d'une valeur à travers une séquence de fonctions (gauche à droite). |
compose |
Assemble des fonctions selon la notation mathématique (droite à gauche). |
curry |
Transforme une fonction multi-arguments en une chaîne de fonctions à argument unique. |
flip |
Permute l'ordre des deux premiers arguments d'une fonction. |
tap |
Déclenche des effets de bord sans interrompre ni modifier le flux de données. |
thunk |
Définit un calcul paresseux (lazy) dont le résultat est mis en cache (mémoïsé). |
identity |
Renvoie simplement l'entrée telle quelle. |
const |
Ignore ses arguments pour renvoyer systématiquement la même valeur fixe. |
once |
Garantit qu'une fonction ne s'exécute qu'une seule fois au maximum. |
try_catch |
Convertit les fonctions levant des exceptions en fonctions retournant des valeurs Result. |
Types de données algébriques (ADT)¶
Ces types modélisent des schémas courants de manière sûre, robuste et composable.
| Type | Module | Objectif |
|---|---|---|
Option |
fptk.adt.option |
Gestion explicite de l'absence de valeur (remplace avantageusement les tests sur None). |
Result |
fptk.adt.result |
Gestion typée des erreurs (alternative robuste aux exceptions). |
Reader |
fptk.adt.reader |
Injection de dépendances via la circulation transparente d'un environnement. |
State |
fptk.adt.state |
Modélisation pure de calculs impliquant des changements d'état. |
Writer |
fptk.adt.writer |
Accumulation de journaux (logs) ou de métriques parallèlement au calcul principal. |
NonEmptyList |
fptk.adt.nelist |
Type de liste garantissant la présence d'au moins un élément. |
Opérations sur les collections¶
| Module | Objectif |
|---|---|
traverse |
Fonctions sequence et traverse pour manipuler des collections d'Option ou de Result. |
validate |
Validation de style applicatif permettant d'accumuler l'ensemble des erreurs. |
lazy |
Opérations sur itérateurs paresseux pour un traitement de données économe en mémoire. |
async |
Utilitaires asynchrones pour orchestrer des opérations concurrentes basées sur Result. |
Comment consulter cette documentation ?¶
Chaque page de référence adopte une structure constante pour faciliter votre lecture :
- Concept — L'idée fondamentale issue de la programmation fonctionnelle et son intérêt pratique.
- API — Détail des types, des fonctions et de leurs signatures respectives.
- Fonctionnement — Précisions sur l'implémentation et les choix de conception.
- Exemples — Extraits de code illustrant les cas d'utilisation les plus fréquents.
- Quand l'utiliser ? — Conseils pour choisir l'outil le plus adapté à votre besoin.
Accès rapide par besoin¶
« Je veux gérer l'absence de valeur sans multiplier les tests sur None »
→ Consulter Option
« Je préfère utiliser des erreurs typées plutôt que des exceptions »
→ Consulter Result
« Je souhaite enchaîner mes transformations de manière fluide et lisible »
→ Consulter pipe et compose
« Je veux injecter des dépendances sans polluer tous mes paramètres de fonction »
→ Consulter Reader
« Je dois suivre des changements d'état de façon pure et prévisible »
→ Consulter State
« Je veux collecter des logs ou des métriques pendant un calcul »
→ Consulter Writer
« Je souhaite valider des données et obtenir la liste complète des erreurs »
→ Consulter validate_all
« Je dois traiter des volumes de données importants sans saturer la mémoire » → Consulter les itérateurs paresseux (lazy iterators)
« Je veux lancer des opérations asynchrones et combiner leurs résultats » → Consulter les outils async