Login / Sign up
Discover Bonzai
Terms of Use
Legal notice
Privacy
Region
Language
matyo91
matyo91
12
Subscribers
Facebook
X
Whatsapp
Telegram
👉 You must follow matyo91 to access chat.
Feed Shop About

🎹 Programmation rĂ©cursive de pipes

Facebook
Twitter
Whatsapp
Telegram
5 months ago

Dans la programmation, on commence souvent par écrire des boucles impératives. Simples, efficaces
 mais vite limitées. Prenons un exemple concret : une boucle for qui affiche les valeurs de i de 1 à 3.

for ($i = 1; $i <= 3; $i++) { echo $i . PHP_EOL; }

🔁 La reprĂ©sentation en graphe 2D

On peut représenter ce for sous forme de graphe :

  • Initialisation i = 1

  • Test de condition i <= 3 ?

  • ExĂ©cution du corps de la boucle (print i)

  • IncrĂ©ment i = i + 1

  • Retour Ă  la condition tant qu’elle est vraie

  • Sortie quand la condition devient fausse

Visuellement, cela donne un cycle avec plusieurs nƓuds et flĂšches. Ce type de graphe fonctionne, mais il a un problĂšme majeur : plus le programme grossit, plus le graphe devient illisible. On se retrouve avec des dizaines de nƓuds, des flĂšches dans tous les sens
 et la lecture devient un vrai casse-tĂȘte.

📏 La version linĂ©aire : un pipe fonctionnel

Au lieu de raisonner en graphe 2D, on peut rĂ©duire la boucle Ă  une transformation linĂ©aire. On passe d’un Ă©tat initial (i = 1), on applique une fonction qui gĂšre la rĂ©cursion, et on arrive Ă  la sortie (Exit). Tout est alignĂ© verticalement comme un pipeline de donnĂ©es.

Schématiquement :

i = 1 ↓ Y (rĂ©cursion) ↓ Exit

Ici, le Y Combinator joue le rĂŽle clĂ© : il permet d’exprimer la rĂ©cursion dans un langage fonctionnel sans avoir besoin de nommer explicitement la fonction. La rĂ©cursion devient un nƓud unique dans le pipe, au lieu d’un enchevĂȘtrement de flĂšches dans un graphe.

đŸ§© Exemple en PHP avec Y Combinator

// Définition du Y Combinator $Y = fn($F) => (function ($x) use ($F) { return $F(function (...$args) use ($x, $F) { return $x($x)(...$args); }); })(fn($x) => $F(function (...$args) use ($x, $F) { return $x($x)(...$args); })); // Boucle for transformée en pipe récursif $step = function ($state) { ['i'=>$i,'max'=>$max] = $state; if ($i > $max) return [$state, true]; echo $i . PHP_EOL; return [['i'=>$i+1,'max'=>$max], false]; }; $recurse = $Y(function ($self) { return function ($state, $step) use ($self) { [$next, $done] = $step($state); return $done ? $next : $self($next, $step); }; }); $init = ['i'=>1,'max'=>3]; $recurse($init, $step);

Sortie :

1 2 3

🎯 Pourquoi c’est intĂ©ressant ?

  • LisibilitĂ© : un pipe linĂ©aire est beaucoup plus simple Ă  comprendre qu’un graphe 2D.

  • ModularitĂ© : chaque Ă©tape est une fonction pure qui peut ĂȘtre testĂ©e et rĂ©utilisĂ©e.

  • Puissance : le Y Combinator permet d’exprimer la rĂ©cursion sans dĂ©pendre de l’impĂ©ratif.

  • ÉlĂ©gance : la structure est claire, de haut en bas, comme un flux de donnĂ©es.

🔼 Conclusion

Les graphes de nƓuds sont utiles pour des cas rapides, mais ils deviennent vite des code spaghetti visuels. En adoptant une approche fonctionnelle avec des pipes et des combinators, on gagne en lisibilitĂ©, en rĂ©utilisabilitĂ© et en puissance expressive.

👉 Ne dessinez plus vos boucles comme des graphes 2D. Exprimez-les comme des pipes fonctionnels. C’est plus concis, plus clair, et ça ouvre la porte à des abstractions bien plus riches.

✹ Si tu veux aller plus loin :

  • Documentation Flow

🎁 Je propose des sĂ©ances de coaching gratuites de 30 minutes pour aider les crĂ©ateurs comme vous Ă  automatiser leurs processus et Ă  gagner du temps ⏱

👉 RĂ©servez votre sĂ©ance gratuite ici :

matyo91
matyo91
Free

Consulting Tech & Automation – Call DĂ©couverte Gratuit

Open

Merci de votre lecture ! CrĂ©ons ensemble des workflows intelligents, rapides et automatisĂ©sÂ đŸ’»âšĄ

Follow matyo91 to comment
matyo91

matyo91

Je t'aide Ă  automatiser tes process
12
Visit this Bonzai
Follow matyo91 to get the latest updates.

🚀 CrĂ©ation d'une application PHP MCP pour publier des articles Darkwood

5 days ago
9

🚀 Je construis un moteur de dictĂ©e en PHP (Flow + Symfony + Whisper.cpp)

1 week ago
16

⚔ DĂ©couverte de l'extension cataclysme Hearthstone

1 week ago
16

đŸ€– DĂ©veloppement parallĂšle d'IA avec Cursor et Git Worktrees

2 weeks ago
32

đŸ€– Comment rendre Darkwood prĂȘt pour les agents

3 weeks ago
47

đŸ§‘â€đŸ’» Codeur vs Vibe codeur

3 weeks ago
31

🚹 Darkwood IaExceptionBundle — Quand les erreurs commencent Ă  s'expliquer d'elles-mĂȘmes

3 weeks ago
30

⚙ FOSDEM 2026 : signaux structurels de l’écosystĂšme open source

1 month ago
43

♟ DĂ©gĂąts de dĂ©fausse infini

1 month ago
56

📝 Gouvernance IT : reprendre le contrîle sans ralentir l’innovation

1 month ago
54

⭐ Monter LĂ©gende avec le Guerrier QuĂȘte (Enter the Lost City)

2 months ago
64

⭐ Monter lĂ©gende avec le deck Paladin Aggro Bubule

2 months ago
59

🎄 Offre de fin d’annĂ©e – Formation Flow (PHP)

2 months ago
64

⭐ Meetup AFUP Paris DĂ©cembre 2025

2 months ago
65

đŸ›ïž Open Source Experience 2025 : un Ă©cosystĂšme qui s’organise, s’affirme et accĂ©lĂšre

2 months ago
70

ai-PULSE 2025 : l'Europe de l'IA passe à la vitesse supérieure

2 months ago
72

đŸ§© Meetup AFUP Paris – Novembre 2025

3 months ago
79

đŸ€– L’IA CafĂ© Club #12 : CrĂ©ation, business, cinĂ©ma
 l’IA sous toutes ses formes Ă  la Monnaie de Paris

3 months ago
86

🎼 Comprendre l’ECS : la brique invisible derriùre les jeux modernes

4 months ago
111

🚀 Uniflow 1.1.18

4 months ago
119
© 2026 Bonzai Privacy Legal notice Terms of Use