J’ai un peu essayé Haskell mais je suis découragé par la lenteur et le manque de robustesse de l’installation de packages avec cabal. Il existe d’ailleurs l’expression Cabal Hell au sein de la communauté Haskell pour décrire la situation dans laquelle on n’arrive pas à installer un package. La lenteur est notamment due au fait que la moindre fonctionalité est scindée en une multitude de bibliothèques très spécialisées. Il est étonnant par exemple de constater le nombre de dépendances d’un simple parseur JSON comme Aeson. Installer un framework web comme Yesod prends beaucoup de temps.
Un autre aspect que je n’aime pas beaucoup dans la culture Haskell est la tendance à utiliser des variables d’une seule lettre et des opérateurs à base de caractères spéciaux, y compris dans les bibliothèque tierces, plutôt que des noms de variable et de fonction explicites. Cela donne parfois au code Haskell un petit air de Perl codé sans considération pour la maitenance.
Enfin j’ai été déçu de constater que malgré la réclame faite pour la robustesse du langage rendue possible par son système de type et son compilateur intelligent, je suis tombé en fait assez rapidemment sur des plantages à l’exécution à cause de pattern matching imcomplets.
Au final je suis déçu car j’ai passé du temps à apprendre Haskell et je ne vois pas venir le fruit de mes efforts. Pourtant j’étais intéressé par les notions de pureté fonctionnelle et d’évaluation paresseuse.
Est-ce que des personnes connaissant à la fois Haskell et OCaml peuvent indiquer si OCaml s’en sort mieux sur les points que j’ai évoqués ?