>> Mais il faut quand même y mettre quelque chose dans ce design-pattern :)
Oui, enfin, c'est pas lié au concept de monade lui-même.
Il serait bien plus sensé d'écrire « des structures de données et algorithmes adaptés au développement web avec un langage fonctionnel. »
Par exemple, du « message passing » au lieu de plein d'effets de bords, c'est super agréable à utiliser avec un tas de langages fonctionnels.
>> Je pense qu'elle permet d'abstraire et « purifier » les effets de bords que tu vas faire sur le résultat du traitement de la requête histoire que ce soit sûr et élégant...
Abstraire, oui. C'est d'ailleurs la force des langages fonctionnels de permettre un raisonnement de haut niveau.
Purifier, non. Ça ne purifie rien une monade. Ça dit que ce qui est dedans ne « déborde » pas, ce qui est complétement différent. Ensuite, ce n'est pas parce que la monade IO utilisée pour justifier les effets de bords est nécessaire à tout programme non trivialement évaluable (car si on ne fait pas d'IO, on a pas besoin d'évaluer le programme !) que toutes les monades servent à ça !
On fait souvent des continuations avec des monades, du passage implicite d'arguments, du backtracking, et même des listes toutes connes sans aucun effet de bord.
Bon, d'après le code, c'est une combinaison d'environnements (passage implicite d'argements), de traitement des données (ou de son échec) et d'effets de bords. Une belle abstraction, en effet.
Mais une monade, c'est aussi *nécessairement* la vérification de lois (comme l'associativité). Et peu sont ceux qui prouvent que ces lois sont vérifiées quand ils créent (ou croient créer) une monade. On peut tout à fait en Haskell écrire un programme avec un truc qui ressemble à une monade, qui utilise la formule magique "instance Monad" et qui n'est pas une monade.
Bref, encore une victoire des langages fonctionnels (pour l'élégance du code) et du buzz (pour le côté « oh ! c'est grâce à une monade [lien vers un article imbitable pour le commun des mortels sur les catégories pour donner un semblant d'autorité à la déclamation] que c'est cool. »)
[^] # Re: Pourquoi ?
Posté par Axioplase ıɥs∀ (site web personnel) . En réponse à la dépêche 3 frameworks de développement : Ruby on Rails, Snap et Lamson. Évalué à 4.
Oui, enfin, c'est pas lié au concept de monade lui-même.
Il serait bien plus sensé d'écrire « des structures de données et algorithmes adaptés au développement web avec un langage fonctionnel. »
Par exemple, du « message passing » au lieu de plein d'effets de bords, c'est super agréable à utiliser avec un tas de langages fonctionnels.
>> Je pense qu'elle permet d'abstraire et « purifier » les effets de bords que tu vas faire sur le résultat du traitement de la requête histoire que ce soit sûr et élégant...
Abstraire, oui. C'est d'ailleurs la force des langages fonctionnels de permettre un raisonnement de haut niveau.
Purifier, non. Ça ne purifie rien une monade. Ça dit que ce qui est dedans ne « déborde » pas, ce qui est complétement différent. Ensuite, ce n'est pas parce que la monade IO utilisée pour justifier les effets de bords est nécessaire à tout programme non trivialement évaluable (car si on ne fait pas d'IO, on a pas besoin d'évaluer le programme !) que toutes les monades servent à ça !
On fait souvent des continuations avec des monades, du passage implicite d'arguments, du backtracking, et même des listes toutes connes sans aucun effet de bord.
Bon, d'après le code, c'est une combinaison d'environnements (passage implicite d'argements), de traitement des données (ou de son échec) et d'effets de bords. Une belle abstraction, en effet.
Mais une monade, c'est aussi *nécessairement* la vérification de lois (comme l'associativité). Et peu sont ceux qui prouvent que ces lois sont vérifiées quand ils créent (ou croient créer) une monade. On peut tout à fait en Haskell écrire un programme avec un truc qui ressemble à une monade, qui utilise la formule magique "instance Monad" et qui n'est pas une monade.
Bref, encore une victoire des langages fonctionnels (pour l'élégance du code) et du buzz (pour le côté « oh ! c'est grâce à une monade [lien vers un article imbitable pour le commun des mortels sur les catégories pour donner un semblant d'autorité à la déclamation] que c'est cool. »)