Les monades en Haskell : une abstraction élégante
- Les monades ne sont pas simplement un concept similaire à
Promise, mais un puissant outil d’abstraction
- Grâce à la typeclass
Monad, il est possible de réutiliser le code dans divers contextes (Maybe, [], IO, State)
- Des fonctions génériques (par ex.
sequence, mapM) peuvent être utilisées avec toutes les monades
- La notation
do permet d’écrire un code plus lisible
- Un même motif permet d’exprimer de façon cohérente différents contextes de calcul
Une approche différente en OCaml : le pragmatisme
- Utilisation du système de modules et des foncteurs plutôt que des typeclasses
- En l’absence de prise en charge syntaxique (par ex. la notation
do), le code monadique est plus verbeux
- Les effets de bord étant autorisés directement, les monades ne sont pas indispensables
- Préférence pour l’utilisation directe des types
option et result ainsi que pour l’abstraction au niveau des modules
- Il est possible d’écrire un code plus facile à comprendre localement
Différences de philosophie dans la conception du langage
- Haskell : langage purement fonctionnel, les monades sont indispensables pour gérer les effets
- OCaml : les effets de bord étant autorisés, il est possible d’écrire un code plus direct
- Différence philosophique quant au rôle de l’abstraction, de l’explicitation et du système de types
- Haskell met l’accent sur la cohérence et l’abstraction, OCaml sur la clarté et le pragmatisme
Point de vue conclusif
- L’approche d’abstraction cohérente de Haskell est particulièrement séduisante dans les systèmes complexes
- L’approche directe d’OCaml est utile lorsque la compréhension immédiate est prioritaire
- Les typeclasses et le support syntaxique permettent en Haskell de structurer le code d’une manière particulièrement élégante
- Les deux approches ont chacune leurs avantages, et le bon choix dépend du contexte
Aucun commentaire pour le moment.