Sommaire: Apprendre Haskell
Introduction
À propos de ce tutoriel
Donc, qu’est-ce qu’Haskell ?
Ce dont vous avez besoin avant de plonger
Démarrons
Prêts, feu, partez !
Nos premières fonctions
Introduction aux listes
T exas rangées
Je suis une liste en compréhension
Tuples
Types et classes de types
Faites confiance aux types
Variables de type
Classes de types 101
Syntaxe des fonctions
Filtrage par motif
Gardes, gardes !
Où !?
Let it be
Expressions case
Récursivité
Bonjour récursivité !
Maximum de fun
Un peu plus de fonctions récursives
Vite, triez !
Penser récursif
Fonctions d’ordre supérieur
Fonctions curryfiées
À l’ordre du jour : de l’ordre supérieur
Maps et filtres
Lambdas
Plie mais ne rompt pas
Appliquer des fonctions avec $
Composition de fonctions
Modules
Charger des modules
Data.List
Data.Char
Data.Map
Data.Set
Créer nos propres modules
Créer nos propres types et classes de types
Introduction aux types de données algébriques
Syntaxe des enregistrements
Paramètres de types
Instances dérivées
Synonymes de types
Structures de données récursives
Classes de types 102
Une classe de types oui-non
La classe de types Functor
Sortes et un peu de type-fu
Entrées et Sorties
Hello, world!
Fichiers et flots
Arguments de ligne de commande
Aléatoire
Chaînes d’octets
Exceptions
Résoudre des problèmes fonctionnellement
Calculatrice de notation polonaise inverse
D’Heathrow à Londres
Foncteurs, foncteurs applicatifs et monoïdes
Foncteurs revisités
Foncteurs applicatifs
Le mot-clé newtype
Monoïdes
Pour une poignée de monades
Trempons-nous les pieds avec Maybe
La classe de types Monad
Le funambule
Notation do
La monade des listes
Les lois des monades
Et pour quelques monades de plus
Lui écrire ? Je la connais à peine !
La lire ? Pas cette blague encore
Calculs à états dans tous leurs états
Erreur, erreur, ma belle erreur
Quelques fonctions monadiques utiles
Créer des monades
Zippeurs
Une petite balade
Une traînée de miettes
Se focaliser sur des listes
Un système de fichiers élémentaire
Attention à la marche
Extrait du cours apprendre Haskell
Introduction
À propos de ce tutoriel
Bienvenue dans Appre ndre Haske ll v ous fe ra le plus grand bie n ! Si vous lisez ceci, il est possible que vous souhaitiez apprendre Haskell. Vous êtes au bon endroit, mais discutons un peu de ce tutoriel avant tout.
J’ai décidé d’écrire ce tutoriel parce que je voulais consolider ma propre connaissance d’Haskell, et parce que je pensais pouvoir aider les débutants à l’apprendre selon mon point de vue. Il y a plusieurs tutoriels traitant de Haskell qui traînent sur Internet. Quand je débutais en Haskell, je n’ai pas appris que d’une seule source. Ma méthode d’apprentissage consistait à lire plusieurs tutoriels et articles, car chacun d’eux expliquait d’une manière un peu différente de l’autre. En confrontant plusieurs ressources, j’ai pu assembler les pièces du puzzle et tout s’est mis à sa place. Ceci est une tentative visant à produire une ressource de plus afin d’apprendre Haskell, de sorte que vous ayez plus de chance d’en trouver une que vous appréciez.
Ce tutoriel vise les personnes ayant de l’expérience dans un langage de programmation impérative (C, C++, Java, Python, …) mais qui n’ont jamais programmé dans un langage de programmation fonctionnel auparavant (Haskell, ML, OCaml, …).
Bien que je me doute que même sans vraie expérience en programmation, une chouette personne comme vous pourra suivre et apprendre Haskell.
Le canal #haskell sur le réseau freenode est un bon endroit pour poser des questions si vous êtes bloqué (NdT: Le canal #haskell-fr du même réseau vous permettra de poser vos questions en français). Les gens y sont extrêmement gentils, patients et compréhensifs envers les débutants.
J’ai échoué dans mon apprentissage de Haskell à peu près deux fois avant d’arriver à le saisir, car cela me semblait trop bizarre et je ne comprenais pas. Mais alors, j’ai eu le déclic, et après avoir passé cet obstacle initial, le reste est venu plutôt facilement. Ce que j’essaie de vous dire : Haskell est génial, et si vous êtes intéressés par la programmation, vous devriez l’apprendre même si cela semble bizarre au début. Apprendre Haskell est très similaire à l’apprentissage de la programmation la première fois – c’est fun ! Ça vous force à penser différemment, ce qui nous amène à la section suivante…
Donc, qu’est-ce qu’Haskell ?
Haskell est un langage de programmation fonctionne l pur. Dans les langages impératifs, vous effectuez des choses en donnant à l’ordinateur une séquence de tâches, et il les exécute. Lors de cette exécution, il peut changer d’état. Par exemple, vous affectez à une variable a la valeur 5, puis vous faites quelque chose, puis lui affectez une autre valeur. Vous avez des structures de contrôle de flot pour répéter des actions plusieurs fois. Dans un langage de programmation fonctionnel pur, vous n’indiquez pas à l’ordinateur quoi faire, mais plutôt ce que les choses sont. La factorielle d’un nombre est le produit de tous les nombres de 1 à celui-ci, la somme d’une liste de nombres est égale au premier de ceux-ci additionné à la somme des autres, etc. Vous exprimez ceci sous la forme de fonctions.
Également, vous n’affectez pas une valeur à une variable, puis une autre valeur plus tard. Si vous dites que a est égal à 5, vous ne pouvez pas dire qu’il est égal à autre chose plus tard, car vous venez de dire qu’il était égal à 5. Quoi, vous êtes un menteur ? Donc, dans les langages fonctionnels purs, une fonction n’a pas d’effets de bord. La seule chose qu’une fonction puisse faire, c’est calculer quelque chose et retourner le résultat.
Ce dont vous avez besoin avant de plonger
Un éditeur de texte, et un compilateur Haskell. Vous avez probablement déjà un éditeur de texte favori, donc ne perdons pas de temps avec ça. Pour les besoins de ce tutoriel, nous utiliserons GHC, le compilateur Haskell le plus utilisé. Le meilleur moyen de démarrer est de télécharger la plate-forme Haskell, qui contient simplement un Haskell prêt à tourner.
GHC peut prendre un script Haskell (généralement avec l’extension .hs) et le compiler, mais il a aussi un mode interactif qui permet d’interagir interactivement avec les scripts. Interactivement. Vous pouvez appeler des fonctions depuis les scripts que vous chargez, et les résultats seront immédiatement affichés. Pour apprendre, c’est beaucoup plus simple et rapide que de compiler chaque fois que vous faites une modification, et ensuite relancer le programme depuis votre terminal. Le mode interactif est invoqué en tapant ghci dans votre terminal. Si vous avez défini des fonctions dans un fichier, par exemple myfunctions.hs , vous pouvez les charger en tapant :l myfunctions , puis jouer avec, à condition que myfunctions.hs soit dans le dossier d’où ghci a été invoqué. Si vous modifiez le script .hs, tapez juste :l myfunctions à nouveau, ou encore :r , qui est équivalent puisqu’il recharge le script courant. Ma procédure habituelle quand je joue avec des choses est de définir des fonctions dans un fichier a.hs, de les charger, et de bidouiller avec, puis de retourner changer le .hs, recharger, etc. C’est aussi ce qu’on va faire à présent.
Démarrons
Prêts, feu, partez !
Bien, démarrons ! Si vous êtes le genre de personne horrible qui ne lit pas les introductions et que vous l’avez sautée, vous feriez peut-être bien de tout de même lire la dernière section de l’introduction, car elle explique ce dont vous avez besoin pour suivre ce tutoriel et comment l’on va charger des fonctions. La première chose qu’on va faire, c’est lancer un GHC interactif et appeler quelques fonctions pour se faire une première idée de Haskell. Ouvrez donc votre terminal et tapez ghci . Vous serez accueilli par un message semblable à celui-ci.
GHCi, version 6.8.2: http://www.haskell.org/ghc/ 😕 for help
Loading package base … linking … done.
Prelude>
Bravo, vous êtes dans GHCi ! L’invite Prelude> peut devenir de plus en plus long lorsqu’on importera des choses dans la session, alors on va le remplacer par ghci> . Si vous voulez le même invite, tapez simplement :set prompt « ghci> » .
Voici un peu d’arithmétique élémentaire.
……..
Cours apprendre Haskell vous fera le plus grand bien! (5509 Ko) (Cours PDF)