URL: https://linuxfr.org/news/two-dozens-short-lessons-in-haskell Title: Two Dozens Short Lessons in Haskell Authors: Anonyme Date: 2001年06月11日T00:01:03+02:00 Tags: livre et haskell Score: 0 Extrait : « Ce livre aurait pu s'appeler Little Haskeller... S'inspirant du principe qui fit le succès de Little Lisper et Little Schemer, il entraîne le lecteur dans un jeu de questions/réponses lui faisant découvrir différentes facettes de ce langage de programmation. » ---- ---- *Two Dozens Short Lessons in Haskell* *Auteur :* Rex Page *Pages* 154 + 136 *Rédacteur :* [JZimm](mailto:jacob.zimmermann@laposte.net) ![HaskellGleam](https://web.archive.org/web/20011211234311if_/http://haskell.org:80/HaskellGleam.jpg) La littérature consacrée au langage Haskell est aujourd'hui certes abondante, cependant, peu d'ouvrages offrent au novice une introduction aussi abordable. Plutôt qu'être regroupées au sein de grands ensembles thématiques comme il est d'usage dans ce genre de livre, les deux douzaines de leçons proposées constituent un enchaînement plus ou moins naturel dans l'apprentissage de Haskell. En partant de l'incontournable "Hello World", le lecteur explore ainsi la manipulation de listes et chaînes de caractères, qui l'amène évidemment vers la notion de fonction et sa manipulation en Haskell (déclaration, évaluation partielle, forme curryfiée etc...) Après avoir dompté les listes et les fonctions, on découvre l'autre brique fondamentale du langage : le système de typage. Là encore, les choses s'enchaînent logiquement, chaque chapitre complète et enrichit les précédents. Les seuls types de données vus pour le moment étant les listes/chaînes de caractères, les tuples et les fonctions, un chapitre particulier est consacré aux nombres. Le lecteur possède alors les bases nécessaires pour comprendre la logique inhérente au langage Haskell et à son modèle d'exécution : c'est ce dont parlent les chapitres suivants. Enfin, on apprend à encapsuler les fonctions dans des modules et à les protéger par des "gardes", tout ceci pour programmer de manière structurée et modulaire. Les chapitres restants abordent quelques points non vus jusqu'à présent mais facilement compréhensibles par le lecteur à ce stade : en particulier les entrées/sorties (voir plus loin), d'autres types numériques (les rationnels) et la définition des types par l'utilisateur. Le livre couvre ainsi un éventail plutôt large des différents aspects de Haskell, en suivant invariablement un même schéma. Chaque chapitre débute par quelques paragraphes d'explications et d'exemples commentés, bâtis autour d'une petite application servant de prétexte. Le niveau de complexité est ici très progressif : dans les premiers chapitres, il s'agit de manipuler simplement des chaînes de caractères et chercher par exemple des palindromes, plus loin, le lecteur méditera sur un chiffre de César ou l'algorithme de Horner pour terminer avec un petit jeu de Tic-Tac-Toe. Après cette introduction, généralement accompagnée d'une multitude de remarques, de notes et de rappels, le lecteur se voit poser une série de questions calquées sur les exemples précédents : la plupart du temps, il s'agit de donner le résultat de l'évaluation d'une expression Haskell, ou au contraire de formuler une expression qui renvoie le résultat attendu. La règle du jeu est simple : aucune surprise, aucun piège, rien que l'application directe du cours ; les exemples étant toujours choisis très informels et "terre à terre". Ainsi, le novice ne devrait rencontrer aucune difficulté pour répondre à ces questions et conserver un sentiment de bien maîtriser le sujet : une motivation indispensable pour apprendre ! À la fin de chaque chapitre, les auteurs proposent une série de questions de synthèse. Il s'agit de QCM où le lecteur devra souvent se creuser un peu plus les méninges, mais l'esprit du livre y reste omniprésent, y compris les nombreux clins d'oeil. Exemple : à la question "comment Haskell représente-t-il les nombres ?", par exemple, les réponses proposées sont "a.) en décimal b.) en binaire c.) en hexadécimal d.) comme il veut - ce ne sont pas vos oignons" Cette initiation à Haskell s'avère donc à la fois approfondie et très didactique, néanmoins, certains chapitres accusent quelques faiblesses. C'est notamment le cas de la partie consacrée aux entrées/sorties, qui laisse une impression mitigée. A l'image du reste du livre, elle permet au débutant de comprendre rapidement les fonctions d'I/O disponibles en Haskell, et ce de manière toujours très intuitive. Cependant, c'est là que le bât blesse : tout cela reste justement trop intuitif et "pratique", on ne trouve aucune explication des fameuses Monades sous-jacentes ! Concept théorique obscur s'il en est, c'est pourtant ce qui rebute de manière quasi-systématique les débutants en Haskell qui ont l'impression de "ne rien comprendre" à l'affaire. Un chapitre consacré à ce sujet aurait réellement été bienvenu, d'autant plus qu'une fois maîtrisées, les monades s'avèrent être un outil d'une puissance fantastique ! Sur ce sujet, on ne saurait trop conseiller aux intéressé(e)s de lire l'excellent article de Philip Walder "Monads for Functional Programming" (Program Design Calculi : Proceedings of the 1992 {M}arktoberdorf International Summer School, Springer-Verlag 1993.) De même, l'annexe du livre propose un ensemble de bibliothèques et extensions suggérées ou tout simplement jugées intéressantes par les auteurs, que le lecteur est libre de télécharger. Malheureusement, cela se résume à la documentation générée automatiquement à partir des commentaires du code-source : un inventaire des prototypes des fonctions accompagné de quelques explications plus que télégraphiques. L'intention est très bonne, mais le résultat ressemble tout de même à une véritable liste d'épicier... Enfin, la moindre originalité de ce livre n'est certainement pas sa présentation puisqu'il se compose en réalité de deux volumes : le Question Book et l'Answer Book. Le premier, à mi-chemin entre un ouvrage de cours et un cahier de TD, se suffit à lui-même et contient tout ce dont le lecteur aura en principe besoin pour progresser et finalement maîtriser Haskell. L'Answer Book, comme son nom l'indique, contient les solutions aux questions et exercices posés dans le Question Book. En pratique, on peut dire que son utilisation est généralement facultative. Ces deux volumes étant disponibles sous forme éléctronique, on pourra alors soit imprimer seulement le Question Book et opter pour un apprentissage plus actif (il faudra alors avoir souvent recours à l'ordinateur pour tester les exemples et vérifier ses réponses), soit imprimer les deux et les relier ensemble pour obtenir quelque chose entre un tutoriel et un manuel de référence... Notons encore que tous les exemples et exercices du livre sont prévus pour fonctionner avec l'interpréteur libre Hugs, disponible gratuitement sous Linux aussi bien que sous Windows (en standard dans la distribution Debian, entre autres). Il est également possible d'utiliser le nouveau mode interactif du Glasgow Haskell Compiler (version 5 ou supérieure), ces deux environnements étant très proches en ce qui concerne leur utilisation. Au final, on ne peut que saluer l'initiative des auteurs de cet ouvrage. Non seulement ils proposent une initiation à Haskell à la fois pratique, vivante et sérieuse, mais de plus, le livre est disponible gratuitement pour un usage personnel et/ou éducatif sous forme de fichiers Postscript. A découvrir d'urgence, donc, et bonne programmation en Haskell ! ## Table des matières 1. Hello World etc. 2. Definitions 3. How to run Haskell programs 4. Computations on sequences - List comprehensions 5. Function composition and currying 6. Patterns of computation - composition, folding and mapping 7. Types 8. Function types, classes and polymorphism 9. Types of curried forms and higher order functions 10. Private definitions - the where clause 11. Tuples 12. The class of numbers 13. Iteration and the common patterns of repetition 14. Truncation sequences and lazy evaluation 15. Encapsulation - modules 16. Definitions with alternatives 17. Modules as libraries 18. Interactive keyboard input and screen output 19. Interactive programs with file input/output 20. Fractional numbers 21. Patterns as formal parameters 22. Recursion 23. Ifs, lets and unlimited interactive input 24. Algebraic types ## Références - [Page de download (NdM: via archive.org)](https://web.archive.org/web/20020323002640/https://www.cs.ou.edu/cs1323h/textbook/haskell.shtml) - [Haskell.org](https://www.haskell.org/)

AltStyle によって変換されたページ (->オリジナル) /